diff --git a/src/Managing.Application.Abstractions/Repositories/IBacktestRepository.cs b/src/Managing.Application.Abstractions/Repositories/IBacktestRepository.cs index a3b0191f..4111ad58 100644 --- a/src/Managing.Application.Abstractions/Repositories/IBacktestRepository.cs +++ b/src/Managing.Application.Abstractions/Repositories/IBacktestRepository.cs @@ -8,6 +8,7 @@ namespace Managing.Application.Abstractions.Repositories; public interface IBacktestRepository { void InsertBacktestForUser(User user, Backtest result); + Task InsertBacktestForUserAsync(User user, Backtest result); IEnumerable GetBacktestsByUser(User user); Task> GetBacktestsByUserAsync(User user); IEnumerable GetBacktestsByRequestId(Guid requestId); diff --git a/src/Managing.Application/Bots/Grains/BacktestTradingBotGrain.cs b/src/Managing.Application/Bots/Grains/BacktestTradingBotGrain.cs index b4ebfb88..1f1a2490 100644 --- a/src/Managing.Application/Bots/Grains/BacktestTradingBotGrain.cs +++ b/src/Managing.Application/Bots/Grains/BacktestTradingBotGrain.cs @@ -79,6 +79,7 @@ public class BacktestTradingBotGrain : Grain, IBacktestTradingBotGrain // Initialize wallet balance with first candle tradingBot.WalletBalances.Clear(); tradingBot.WalletBalances.Add(candles.FirstOrDefault()!.Date, config.BotTradingBalance); + var initialBalance = config.BotTradingBalance; var fixedCandles = new HashSet(); // Process all candles following the exact pattern from GetBacktestingResult @@ -166,13 +167,13 @@ public class BacktestTradingBotGrain : Grain, IBacktestTradingBotGrain Metadata = metadata, StartDate = candles.FirstOrDefault()!.OpenTime, EndDate = candles.LastOrDefault()!.OpenTime, - InitialBalance = tradingBot.WalletBalances.FirstOrDefault().Value, + InitialBalance = initialBalance, NetPnl = finalPnl - fees, }; if (save && user != null) { - _backtestRepository.InsertBacktestForUser(user, result); + await _backtestRepository.InsertBacktestForUserAsync(user, result); } // Send notification if backtest meets criteria diff --git a/src/Managing.Infrastructure.Database/PostgreSql/PostgreSqlBacktestRepository.cs b/src/Managing.Infrastructure.Database/PostgreSql/PostgreSqlBacktestRepository.cs index 6c23e2f3..dda6b364 100644 --- a/src/Managing.Infrastructure.Database/PostgreSql/PostgreSqlBacktestRepository.cs +++ b/src/Managing.Infrastructure.Database/PostgreSql/PostgreSqlBacktestRepository.cs @@ -32,6 +32,16 @@ public class PostgreSqlBacktestRepository : IBacktestRepository _context.SaveChanges(); } + public async Task InsertBacktestForUserAsync(User user, Backtest result) + { + ValidateBacktestData(result); + result.User = user; + + var entity = PostgreSqlMappers.Map(result); + _context.Backtests.Add(entity); + await _context.SaveChangesAsync(); + } + /// /// Validates that all numeric fields in the backtest are of the correct type ///