Add custom scenario

This commit is contained in:
2025-06-21 12:25:28 +07:00
parent cc330e8cc3
commit 453806356d
4 changed files with 376 additions and 25 deletions

View File

@@ -118,9 +118,9 @@ public class BacktestController : BaseController
return BadRequest("Account name is required");
}
if (string.IsNullOrEmpty(request.Config.ScenarioName))
if (string.IsNullOrEmpty(request.Config.ScenarioName) && request.Config.Scenario == null)
{
return BadRequest("Scenario name is required");
return BadRequest("Either scenario name or scenario object is required");
}
if (string.IsNullOrEmpty(request.MoneyManagementName) && request.MoneyManagement == null)
@@ -131,13 +131,9 @@ public class BacktestController : BaseController
try
{
Backtest backtestResult = null;
var scenario = _scenarioService.GetScenario(request.Config.ScenarioName);
var account = await _accountService.GetAccount(request.Config.AccountName, true, false);
var user = await GetUser();
if (scenario == null)
return BadRequest("No scenario found");
// Get money management
MoneyManagement moneyManagement;
if (!string.IsNullOrEmpty(request.MoneyManagementName))
@@ -152,13 +148,14 @@ public class BacktestController : BaseController
moneyManagement?.FormatPercentage();
}
// Update config with money management
// Update config with money management - TradingBot will handle scenario loading
var backtestConfig = new TradingBotConfig
{
AccountName = request.Config.AccountName,
MoneyManagement = moneyManagement,
Ticker = request.Config.Ticker,
ScenarioName = request.Config.ScenarioName,
Scenario = request.Config.Scenario,
Timeframe = request.Config.Timeframe,
IsForWatchingOnly = request.WatchOnly,
BotTradingBalance = request.Balance,
@@ -170,9 +167,8 @@ public class BacktestController : BaseController
FlipOnlyWhenInProfit = request.Config.FlipOnlyWhenInProfit,
FlipPosition = request.Config.FlipPosition,
Name = request.Config.Name ??
$"Backtest-{request.Config.ScenarioName}-{DateTime.UtcNow:yyyyMMdd-HHmmss}",
$"Backtest-{request.Config.ScenarioName ?? request.Config.Scenario?.Name ?? "Custom"}-{DateTime.UtcNow:yyyyMMdd-HHmmss}",
CloseEarlyWhenProfitable = request.Config.CloseEarlyWhenProfitable,
Scenario = scenario,
};
switch (request.Config.BotType)