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:
@@ -549,6 +549,8 @@ public class LiveTradingBotGrain : Grain, ILiveTradingBotGrain, IRemindable
|
|||||||
{
|
{
|
||||||
TradingType.Futures => new FuturesBot(logger, _scopeFactory, config, streamProvider),
|
TradingType.Futures => new FuturesBot(logger, _scopeFactory, config, streamProvider),
|
||||||
TradingType.Spot => new SpotBot(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}")
|
_ => throw new InvalidOperationException($"Unsupported TradingType for live trading: {config.TradingType}")
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -448,7 +448,7 @@ public class BundleBacktestHealthCheckWorker : BackgroundService
|
|||||||
|
|
||||||
bundle.Status = failedJobs == 0
|
bundle.Status = failedJobs == 0
|
||||||
? BundleBacktestRequestStatus.Completed
|
? BundleBacktestRequestStatus.Completed
|
||||||
: BundleBacktestRequestStatus.Completed;
|
: BundleBacktestRequestStatus.Failed;
|
||||||
bundle.CompletedBacktests = completedJobs;
|
bundle.CompletedBacktests = completedJobs;
|
||||||
bundle.FailedBacktests = failedJobs;
|
bundle.FailedBacktests = failedJobs;
|
||||||
bundle.CompletedAt = DateTime.UtcNow;
|
bundle.CompletedAt = DateTime.UtcNow;
|
||||||
@@ -464,7 +464,6 @@ public class BundleBacktestHealthCheckWorker : BackgroundService
|
|||||||
// Some jobs are still pending or running - bundle is genuinely stuck
|
// Some jobs are still pending or running - bundle is genuinely stuck
|
||||||
// Reset any stale running jobs back to pending
|
// Reset any stale running jobs back to pending
|
||||||
var runningJobs = jobs.Where(j => j.Status == JobStatus.Running).ToList();
|
var runningJobs = jobs.Where(j => j.Status == JobStatus.Running).ToList();
|
||||||
var resetJobCount = 0;
|
|
||||||
|
|
||||||
foreach (var job in runningJobs)
|
foreach (var job in runningJobs)
|
||||||
{
|
{
|
||||||
@@ -482,14 +481,13 @@ public class BundleBacktestHealthCheckWorker : BackgroundService
|
|||||||
job.AssignedWorkerId = null;
|
job.AssignedWorkerId = null;
|
||||||
job.LastHeartbeat = null;
|
job.LastHeartbeat = null;
|
||||||
await jobRepository.UpdateAsync(job);
|
await jobRepository.UpdateAsync(job);
|
||||||
resetJobCount++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update bundle timestamp to give it another chance
|
// Update bundle timestamp to give it another chance
|
||||||
bundle.UpdatedAt = DateTime.UtcNow;
|
bundle.UpdatedAt = DateTime.UtcNow;
|
||||||
bundle.ErrorMessage =
|
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);
|
await backtestRepository.UpdateBundleBacktestRequestAsync(bundle);
|
||||||
|
|||||||
@@ -1359,6 +1359,8 @@ public static class TradingBox
|
|||||||
{
|
{
|
||||||
TradingType.BacktestFutures => TradingType.Futures,
|
TradingType.BacktestFutures => TradingType.Futures,
|
||||||
TradingType.BacktestSpot => TradingType.Spot,
|
TradingType.BacktestSpot => TradingType.Spot,
|
||||||
|
TradingType.Futures => TradingType.Futures,
|
||||||
|
TradingType.Spot => TradingType.Spot,
|
||||||
_ => throw new InvalidOperationException($"Unsupported TradingType for live trading: {tradingType}")
|
_ => throw new InvalidOperationException($"Unsupported TradingType for live trading: {tradingType}")
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user