private ProfitInfo GetReport(TradeModel[] trades, TradeModel[] nextTrades)
        {
            nextTrades ??= Array.Empty <TradeModel>();

            var cleanTrades = RemoveOpenedTrades(trades);

            if (!cleanTrades.Any())
            {
                return(ProfitInfo.Empty);
            }

            var closing    = GetClosingTrades(nextTrades);
            var withCloses = cleanTrades.Concat(closing).ToArray();

            var info        = StatsComputer.ComputeProfitComplex(withCloses, 0);
            var infoWithFee = StatsComputer.ComputeProfitComplex(withCloses, _feePercentage);

            info.BaseSymbol        = _baseSymbol;
            info.QuoteSymbol       = _quoteSymbol;
            info.DisplayWithFee    = _config.DisplayFee ?? false;
            info.OrderSize         = _orderSize;
            info.CurrentInventory  = _currentInventory;
            info.MaxInventory      = _maxInventory;
            info.MaxInventoryLimit = _maxLimitInventory;

            info.PnlWithFee = infoWithFee.Pnl;

            return(info);
        }
        private ProfitInfo GetReport(TradeModel[] trades)
        {
            var cleanTrades = RemoveOpenedTrades(trades);
            var info        = StatsComputer.ComputeProfitComplex(cleanTrades, 0);
            var infoWithFee = StatsComputer.ComputeProfitComplex(cleanTrades, _feePercentage);

            info.BaseSymbol        = _baseSymbol;
            info.QuoteSymbol       = _quoteSymbol;
            info.DisplayWithFee    = _config.DisplayFee ?? false;
            info.OrderSize         = _orderSize;
            info.CurrentInventory  = _currentInventory;
            info.MaxInventory      = _maxInventory;
            info.MaxInventoryLimit = _maxLimitInventory;

            info.PnlWithFee = infoWithFee.Pnl;

            return(info);
        }