Update vitejs + fix bot saving

This commit is contained in:
2025-05-11 20:23:06 +07:00
parent 65c4ec4957
commit 84e09b32a2
20 changed files with 220 additions and 238 deletions

View File

@@ -1,11 +1,11 @@
using Managing.Application.Abstractions;
using Managing.Application.Abstractions.Repositories;
using Managing.Application.Abstractions.Services;
using Managing.Application.Bots;
using Managing.Core;
using Managing.Core.FixedSizedQueue;
using Managing.Domain.Accounts;
using Managing.Domain.Backtests;
using Managing.Domain.Bots;
using Managing.Domain.Candles;
using Managing.Domain.MoneyManagements;
using Managing.Domain.Scenarios;
@@ -86,10 +86,10 @@ namespace Managing.Application.Backtesting
var scalpingBot = _botFactory.CreateBacktestScalpingBot(config);
scalpingBot.LoadScenario(scenario.Name);
scalpingBot.User = user;
await scalpingBot.LoadAccount();
var candles = initialCandles ?? GetCandles(account, ticker, timeframe, startDate, endDate);
var result = GetBacktestingResult(ticker, scenario, timeframe, scalpingBot, candles, balance, account,
moneyManagement);
var result = GetBacktestingResult(config, scalpingBot, candles);
if (user != null)
{
@@ -141,11 +141,11 @@ namespace Managing.Application.Backtesting
var flippingBot = _botFactory.CreateBacktestFlippingBot(config);
flippingBot.LoadScenario(scenario.Name);
flippingBot.User = user;
await flippingBot.LoadAccount();
var candles = initialCandles ?? GetCandles(account, ticker, timeframe, startDate, endDate);
var result = GetBacktestingResult(ticker, scenario, timeframe, flippingBot, candles, balance, account,
moneyManagement);
var result = GetBacktestingResult(config, flippingBot, candles);
if (user != null)
{
@@ -193,10 +193,10 @@ namespace Managing.Application.Backtesting
var bot = _botFactory.CreateBacktestScalpingBot(config);
bot.LoadScenario(scenario.Name);
bot.User = user;
await bot.LoadAccount();
var result = GetBacktestingResult(ticker, scenario, timeframe, bot, candles, balance, account,
moneyManagement);
var result = GetBacktestingResult(config, bot, candles);
if (user != null)
{
@@ -235,10 +235,10 @@ namespace Managing.Application.Backtesting
var bot = _botFactory.CreateBacktestFlippingBot(config);
bot.LoadScenario(scenario.Name);
bot.User = user;
await bot.LoadAccount();
var result = GetBacktestingResult(ticker, scenario, timeframe, bot, candles, balance, account,
moneyManagement);
var result = GetBacktestingResult(config, bot, candles);
if (user != null)
{
@@ -264,21 +264,16 @@ namespace Managing.Application.Backtesting
}
private Backtest GetBacktestingResult(
Ticker ticker,
Scenario scenario,
Timeframe timeframe,
TradingBotConfig config,
ITradingBot bot,
List<Candle> candles,
decimal balance,
Account account,
MoneyManagement moneyManagement)
List<Candle> candles)
{
if (candles == null || candles.Count == 0)
{
throw new Exception("No candle to backtest");
}
bot.WalletBalances.Add(candles.FirstOrDefault().Date, balance);
bot.WalletBalances.Add(candles.FirstOrDefault().Date, config.BotTradingBalance);
foreach (var candle in candles)
{
bot.OptimizedCandles.Enqueue(candle);
@@ -294,9 +289,10 @@ namespace Managing.Application.Backtesting
var finalPnl = bot.GetProfitAndLoss();
var winRate = bot.GetWinRate();
var optimizedMoneyManagement = TradingBox.GetBestMoneyManagement(candles, bot.Positions, moneyManagement);
var optimizedMoneyManagement =
TradingBox.GetBestMoneyManagement(candles, bot.Positions, config.MoneyManagement);
var stats = TradingHelpers.GetStatistics(bot.WalletBalances);
var growthPercentage = TradingHelpers.GetGrowthFromInitalBalance(balance, finalPnl);
var growthPercentage = TradingHelpers.GetGrowthFromInitalBalance(config.BotTradingBalance, finalPnl);
var hodlPercentage = TradingHelpers.GetHodlPercentage(candles[0], candles.Last());
var scoringParams = new BacktestScoringParams(
@@ -313,8 +309,7 @@ namespace Managing.Application.Backtesting
var score = BacktestScorer.CalculateTotalScore(scoringParams);
var result = new Backtest(ticker, scenario.Name, bot.Positions, bot.Signals.ToList(), timeframe, candles,
bot.Config.BotType, account.Name)
var result = new Backtest(config, bot.Positions, bot.Signals.ToList(), candles)
{
FinalPnl = finalPnl,
WinRate = winRate,
@@ -324,7 +319,6 @@ namespace Managing.Application.Backtesting
WalletBalances = bot.WalletBalances.ToList(),
Statistics = stats,
OptimizedMoneyManagement = optimizedMoneyManagement,
MoneyManagement = moneyManagement,
StrategiesValues = AggregateValues(strategiesValues, bot.StrategiesValues),
Score = score
};
@@ -430,9 +424,9 @@ namespace Managing.Application.Backtesting
{
var candles = await _exchangeService.GetCandlesInflux(
user.Accounts.First().Exchange,
backtest.Ticker,
backtest.Config.Ticker,
backtest.StartDate,
backtest.Timeframe,
backtest.Config.Timeframe,
backtest.EndDate);
if (candles != null && candles.Count > 0)
@@ -465,14 +459,15 @@ namespace Managing.Application.Backtesting
try
{
// Get the account
var account = new Account { Name = backtest.AccountName, Exchange = TradingExchanges.Binance };
var account = new Account
{ Name = backtest.Config.AccountName, Exchange = TradingExchanges.Evm };
// Use the stored start and end dates to retrieve candles
var candles = _exchangeService.GetCandlesInflux(
account.Exchange,
backtest.Ticker,
backtest.Config.Ticker,
backtest.StartDate,
backtest.Timeframe,
backtest.Config.Timeframe,
backtest.EndDate).Result;
if (candles != null && candles.Count > 0)