using Managing.Core.FixedSizedQueue; using Managing.Domain.Accounts; using Managing.Domain.Bots; using Managing.Domain.Candles; using Managing.Domain.Scenarios; using Managing.Domain.Strategies; using Managing.Domain.Strategies.Base; using Managing.Domain.Trades; using static Managing.Common.Enums; namespace Managing.Application.Abstractions { public interface ITradingBot : IBot { TradingBotConfig Config { get; set; } Account Account { get; set; } HashSet Strategies { get; set; } FixedSizeQueue OptimizedCandles { get; set; } HashSet Candles { get; set; } HashSet Signals { get; set; } List Positions { get; set; } Dictionary WalletBalances { get; set; } Dictionary StrategiesValues { get; set; } DateTime StartupTime { get; set; } DateTime PreloadSince { get; set; } int PreloadedCandlesCount { get; set; } decimal Fee { get; set; } Scenario Scenario { get; set; } Task Run(); Task ToggleIsForWatchOnly(); int GetWinRate(); decimal GetProfitAndLoss(); decimal GetTotalFees(); void LoadStrategies(IEnumerable strategies); void LoadScenario(string scenarioName); void UpdateStrategiesValues(); Task LoadAccount(); Task OpenPositionManually(TradeDirection direction); Task CloseTrade(Signal signal, Position position, Trade tradeToClose, decimal lastPrice, bool tradeClosingPosition = false); } }