Add saved bundle status

This commit is contained in:
2025-10-22 16:45:49 +07:00
parent 6ffe9ae9c4
commit a1fe7ed3b3
5 changed files with 46 additions and 18 deletions

View File

@@ -153,14 +153,17 @@ public class BacktestController : BaseController
{
return BadRequest("scoreMin must be between 0 and 100");
}
if (scoreMax.HasValue && (scoreMax < 0 || scoreMax > 100))
{
return BadRequest("scoreMax must be between 0 and 100");
}
if (winrateMin.HasValue && (winrateMin < 0 || winrateMin > 100))
{
return BadRequest("winrateMin must be between 0 and 100");
}
if (winrateMax.HasValue && (winrateMax < 0 || winrateMax > 100))
{
return BadRequest("winrateMax must be between 0 and 100");
@@ -170,10 +173,12 @@ public class BacktestController : BaseController
{
return BadRequest("scoreMin must be less than or equal to scoreMax");
}
if (winrateMin.HasValue && winrateMax.HasValue && winrateMin > winrateMax)
{
return BadRequest("winrateMin must be less than or equal to winrateMax");
}
if (maxDrawdownMax.HasValue && maxDrawdownMax < 0)
{
return BadRequest("maxDrawdownMax must be greater than or equal to 0");
@@ -186,7 +191,7 @@ public class BacktestController : BaseController
var indicatorList = string.IsNullOrWhiteSpace(indicators)
? Array.Empty<string>()
: indicators.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
var filter = new BacktestsFilter
{
NameContains = string.IsNullOrWhiteSpace(name) ? null : name.Trim(),
@@ -364,14 +369,17 @@ public class BacktestController : BaseController
{
return BadRequest("scoreMin must be between 0 and 100");
}
if (scoreMax.HasValue && (scoreMax < 0 || scoreMax > 100))
{
return BadRequest("scoreMax must be between 0 and 100");
}
if (winrateMin.HasValue && (winrateMin < 0 || winrateMin > 100))
{
return BadRequest("winrateMin must be between 0 and 100");
}
if (winrateMax.HasValue && (winrateMax < 0 || winrateMax > 100))
{
return BadRequest("winrateMax must be between 0 and 100");
@@ -381,10 +389,12 @@ public class BacktestController : BaseController
{
return BadRequest("scoreMin must be less than or equal to scoreMax");
}
if (winrateMin.HasValue && winrateMax.HasValue && winrateMin > winrateMax)
{
return BadRequest("winrateMin must be less than or equal to winrateMax");
}
if (maxDrawdownMax.HasValue && maxDrawdownMax < 0)
{
return BadRequest("maxDrawdownMax must be greater than or equal to 0");
@@ -619,8 +629,9 @@ public class BacktestController : BaseController
}
// Calculate total number of backtests
var totalBacktests = request.DateTimeRanges.Count * request.MoneyManagementVariants.Count * request.TickerVariants.Count;
var totalBacktests = request.DateTimeRanges.Count * request.MoneyManagementVariants.Count *
request.TickerVariants.Count;
try
{
var user = await GetUser();
@@ -651,7 +662,9 @@ public class BacktestController : BaseController
TotalBacktests = totalBacktests,
CompletedBacktests = 0,
FailedBacktests = 0,
Status = BundleBacktestRequestStatus.Pending,
Status = request.SaveAsTemplate
? BundleBacktestRequestStatus.Saved
: BundleBacktestRequestStatus.Pending,
Name = request.Name
};
@@ -687,7 +700,8 @@ public class BacktestController : BaseController
Timeframe = request.UniversalConfig.Timeframe,
IsForWatchingOnly = request.UniversalConfig.IsForWatchingOnly,
BotTradingBalance = request.UniversalConfig.BotTradingBalance,
Name = $"{request.UniversalConfig.BotName}_{ticker}_{dateRange.StartDate:yyyyMMdd}_{dateRange.EndDate:yyyyMMdd}",
Name =
$"{request.UniversalConfig.BotName}_{ticker}_{dateRange.StartDate:yyyyMMdd}_{dateRange.EndDate:yyyyMMdd}",
FlipPosition = request.UniversalConfig.FlipPosition,
CooldownPeriod = request.UniversalConfig.CooldownPeriod,
MaxLossStreak = request.UniversalConfig.MaxLossStreak,
@@ -712,15 +726,16 @@ public class BacktestController : BaseController
WatchOnly = request.UniversalConfig.WatchOnly,
Save = request.UniversalConfig.Save,
WithCandles = request.UniversalConfig.WithCandles,
MoneyManagement = mmVariant.MoneyManagement != null ?
new MoneyManagement
MoneyManagement = mmVariant.MoneyManagement != null
? new MoneyManagement
{
Name = mmVariant.MoneyManagement.Name,
Timeframe = mmVariant.MoneyManagement.Timeframe,
StopLoss = mmVariant.MoneyManagement.StopLoss,
TakeProfit = mmVariant.MoneyManagement.TakeProfit,
Leverage = mmVariant.MoneyManagement.Leverage
} : null
}
: null
};
backtestRequests.Add(backtestRequest);
@@ -980,4 +995,4 @@ public class BacktestController : BaseController
Timeframe = moneyManagementRequest.Timeframe
};
}
}
}