Fix backtest

This commit is contained in:
2025-04-29 01:17:58 +07:00
parent 204bd87e6a
commit f91b12fbcc
14 changed files with 113 additions and 92 deletions

View File

@@ -6,6 +6,7 @@ using Managing.Application.Bots;
using Managing.Common;
using Managing.Domain.Bots;
using Managing.Domain.MoneyManagements;
using Managing.Domain.Users;
using Managing.Domain.Workflows;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
@@ -43,14 +44,14 @@ namespace Managing.Application.ManageBot
await _botRepository.InsertBotAsync(botBackup);
}
public BotBackup GetBotBackup(string name)
public BotBackup GetBotBackup(string identifier)
{
return _botRepository.GetBots().FirstOrDefault(b => b.Name == name);
return _botRepository.GetBots().FirstOrDefault(b => b.Identifier == identifier);
}
public void SaveOrUpdateBotBackup(string name, Enums.BotType botType, string data)
public void SaveOrUpdateBotBackup(User user, string identifier, Enums.BotType botType, string data)
{
var backup = GetBotBackup(name);
var backup = GetBotBackup(identifier);
if (backup != null)
{
@@ -61,7 +62,8 @@ namespace Managing.Application.ManageBot
{
var botBackup = new BotBackup
{
Name = name,
User = user,
Identifier = identifier,
BotType = botType,
Data = data
};
@@ -88,13 +90,13 @@ namespace Managing.Application.ManageBot
{
var botTask =
new BotTaskWrapper(Task.Run(() => bot.Start()), bot.GetType(), bot); // Pass bot as the instance
_botTasks.AddOrUpdate(bot.GetName(), botTask, (key, existingVal) => botTask);
_botTasks.AddOrUpdate(bot.Identifier, botTask, (key, existingVal) => botTask);
}
public void AddTradingBotToCache(ITradingBot bot)
{
var botTask = new BotTaskWrapper(Task.Run(() => bot.Start()), bot.GetType(), bot);
_botTasks.AddOrUpdate(bot.GetName(), botTask, (key, existingVal) => botTask);
_botTasks.AddOrUpdate(bot.Identifier, botTask, (key, existingVal) => botTask);
}
public List<ITradingBot> GetActiveBots()
@@ -120,11 +122,11 @@ namespace Managing.Application.ManageBot
switch (backupBot.BotType)
{
case Enums.BotType.SimpleBot:
bot = CreateSimpleBot(backupBot.Name,
null); // Assuming null is an acceptable parameter for workflow
botTask = Task.Run(() => ((IBot)bot).Start());
break;
// case Enums.BotType.SimpleBot:
// bot = CreateSimpleBot(backupBot.Name,
// null); // Assuming null is an acceptable parameter for workflow
// botTask = Task.Run(() => ((IBot)bot).Start());
// break;
case Enums.BotType.ScalpingBot:
var scalpingBotData = JsonConvert.DeserializeObject<TradingBotBackup>(backupBot.Data);
var scalpingMoneyManagement =
@@ -132,7 +134,7 @@ namespace Managing.Application.ManageBot
bot = CreateScalpingBot(
scalpingBotData.AccountName,
scalpingMoneyManagement,
backupBot.Name,
scalpingBotData.Name,
scalpingBotData.Ticker,
scalpingBotData.ScenarioName,
scalpingBotData.Timeframe,
@@ -147,7 +149,7 @@ namespace Managing.Application.ManageBot
bot = CreateFlippingBot(
flippingBotData.AccountName,
flippingMoneyManagement,
backupBot.Name,
flippingBotData.Name,
flippingBotData.Ticker,
flippingBotData.ScenarioName,
flippingBotData.Timeframe,
@@ -160,7 +162,7 @@ namespace Managing.Application.ManageBot
if (bot != null && botTask != null)
{
var botWrapper = new BotTaskWrapper(botTask, bot.GetType(), bot);
_botTasks.AddOrUpdate(backupBot.Name, botWrapper, (key, existingVal) => botWrapper);
_botTasks.AddOrUpdate(backupBot.Identifier, botWrapper, (key, existingVal) => botWrapper);
}
}