Add support for backtesting trading types in LiveTradingBotGrain and TradingBox

- Introduced handling for TradingType.BacktestFutures and TradingType.BacktestSpot in LiveTradingBotGrain.
- Updated TradingBox to map backtest trading types to their respective futures and spot types.
This commit is contained in:
2025-12-11 23:41:53 +07:00
parent a254db6d24
commit 5328d760dd
3 changed files with 6 additions and 4 deletions

View File

@@ -549,6 +549,8 @@ public class LiveTradingBotGrain : Grain, ILiveTradingBotGrain, IRemindable
{
TradingType.Futures => new FuturesBot(logger, _scopeFactory, config, streamProvider),
TradingType.Spot => new SpotBot(logger, _scopeFactory, config, streamProvider),
TradingType.BacktestFutures => new FuturesBot(logger, _scopeFactory, config, streamProvider),
TradingType.BacktestSpot => new SpotBot(logger, _scopeFactory, config, streamProvider),
_ => throw new InvalidOperationException($"Unsupported TradingType for live trading: {config.TradingType}")
};

View File

@@ -448,7 +448,7 @@ public class BundleBacktestHealthCheckWorker : BackgroundService
bundle.Status = failedJobs == 0
? BundleBacktestRequestStatus.Completed
: BundleBacktestRequestStatus.Completed;
: BundleBacktestRequestStatus.Failed;
bundle.CompletedBacktests = completedJobs;
bundle.FailedBacktests = failedJobs;
bundle.CompletedAt = DateTime.UtcNow;
@@ -464,7 +464,6 @@ public class BundleBacktestHealthCheckWorker : BackgroundService
// Some jobs are still pending or running - bundle is genuinely stuck
// Reset any stale running jobs back to pending
var runningJobs = jobs.Where(j => j.Status == JobStatus.Running).ToList();
var resetJobCount = 0;
foreach (var job in runningJobs)
{
@@ -482,14 +481,13 @@ public class BundleBacktestHealthCheckWorker : BackgroundService
job.AssignedWorkerId = null;
job.LastHeartbeat = null;
await jobRepository.UpdateAsync(job);
resetJobCount++;
}
}
// Update bundle timestamp to give it another chance
bundle.UpdatedAt = DateTime.UtcNow;
bundle.ErrorMessage =
$"Bundle was stuck. Reset {resetJobCount} stale jobs to pending.";
$"Bundle was stuck. Reset {runningJobs.Count(j => j.Status == JobStatus.Pending)} stale jobs to pending.";
}
await backtestRepository.UpdateBundleBacktestRequestAsync(bundle);

View File

@@ -1359,6 +1359,8 @@ public static class TradingBox
{
TradingType.BacktestFutures => TradingType.Futures,
TradingType.BacktestSpot => TradingType.Spot,
TradingType.Futures => TradingType.Futures,
TradingType.Spot => TradingType.Spot,
_ => throw new InvalidOperationException($"Unsupported TradingType for live trading: {tradingType}")
};
}