Add indicators to backtest and bot (#14)

* Add indicators to backtest and bot

* Remove
This commit is contained in:
Oda
2025-02-28 00:53:25 +07:00
committed by GitHub
parent e0a8347953
commit c715da8a17
30 changed files with 787 additions and 109 deletions

View File

@@ -10,6 +10,7 @@ using Managing.Domain.MoneyManagements;
using Managing.Domain.Scenarios;
using Managing.Domain.Shared.Helpers;
using Managing.Domain.Strategies;
using Managing.Domain.Strategies.Base;
using Managing.Domain.Trades;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
@@ -46,6 +47,7 @@ public class TradingBot : Bot, ITradingBot
public decimal Fee { get; set; }
public Scenario Scenario { get; set; }
public Dictionary<DateTime, decimal> WalletBalances { get; set; }
public Dictionary<StrategyType, StrategiesResultBase> StrategiesValues { get; set; }
public TradingBot(
string accountName,
@@ -87,6 +89,7 @@ public class TradingBot : Bot, ITradingBot
Candles = new HashSet<Candle>();
Positions = new List<Position>();
WalletBalances = new Dictionary<DateTime, decimal>();
StrategiesValues = new Dictionary<StrategyType, StrategiesResultBase>();
if (!isForBacktest)
{
@@ -184,7 +187,10 @@ public class TradingBot : Bot, ITradingBot
await ManagePositions();
if (!IsForBacktest)
{
SaveBackup();
UpdateStrategiesValues();
}
await UpdateWalletBalances();
if (OptimizedCandles.Count % 100 == 0) // Log every 10th execution
@@ -197,6 +203,14 @@ public class TradingBot : Bot, ITradingBot
}
}
public void UpdateStrategiesValues()
{
foreach (var strategy in Strategies)
{
StrategiesValues[strategy.Type] = ((Strategy)strategy).GetStrategyValues();
}
}
private async Task PreloadCandles()
{
if (OptimizedCandles.Any())