Add backup management

This commit is contained in:
2024-06-20 22:38:26 +07:00
parent 897ff94a66
commit c25752c670
18 changed files with 413 additions and 5 deletions

View File

@@ -11,6 +11,7 @@ using Managing.Domain.Shared.Helpers;
using Managing.Domain.Strategies;
using Managing.Domain.Trades;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using static Managing.Common.Enums;
namespace Managing.Application.Bots;
@@ -64,6 +65,7 @@ public class TradingBot : Bot, ITradingBot
MessengerService = messengerService;
TradingService = tradingService;
IsForWatchingOnly = isForWatchingOnly;
FlipPosition = flipPosition;
AccountName = accountName;
@@ -648,4 +650,48 @@ public class TradingBot : Bot, ITradingBot
await MessengerService.SendTradeMessage(message, isBadBehavior);
}
}
public override string GetBackup()
{
return JsonConvert.SerializeObject(new TradingBotBackup
{
Name = Name,
BotType = BotType,
Strategies = Strategies,
Signals = Signals,
Positions = Positions,
Timeframe = Timeframe,
Ticker = Ticker,
Scenario = Scenario,
AccountName = AccountName,
IsForWatchingOnly = IsForWatchingOnly,
WalletBalances = WalletBalances,
MoneyManagement = MoneyManagement
});
}
public override void LoadBackup(BotBackup backup)
{
var data = JsonConvert.DeserializeObject<TradingBotBackup>(backup.Data);
Strategies = data.Strategies;
Signals = data.Signals;
Positions = data.Positions;
WalletBalances = data.WalletBalances;
}
}
public class TradingBotBackup
{
public string Name { get; set; }
public BotType BotType { get; set; }
public HashSet<IStrategy> Strategies { get; set; }
public HashSet<Signal> Signals { get; set; }
public List<Position> Positions { get; set; }
public Timeframe Timeframe { get; set; }
public Ticker Ticker { get; set; }
public string Scenario { get; set; }
public string AccountName { get; set; }
public bool IsForWatchingOnly { get; set; }
public Dictionary<DateTime, decimal> WalletBalances { get; set; }
public MoneyManagement MoneyManagement { get; internal set; }
}