/// <summary> /// Scans for possibility to open a new trade. /// </summary> /// <param name="candles">candle history</param> /// <param name="bar">currentcandle</param> /// <param name="tradeManager">tradeManager</param> private void ScanForEntry(List <MarketCandle> candles, int bar, ITradeManager tradeManager) { TradeType tradeType; if (IsValidEntry(candles, bar, out tradeType)) { var candle = candles[bar]; var totalRebuy = 1m; if (MaxTimesRebuy >= 1) { totalRebuy += FirstRebuyFactor; } if (MaxTimesRebuy >= 2) { totalRebuy += SecondRebuyFactor; } if (MaxTimesRebuy >= 3) { totalRebuy += ThirdRebuyFactor; } _bundleSize = tradeManager.AccountBalance / totalRebuy; var coins = _bundleSize / candle.ClosePrice; switch (tradeType) { case TradeType.Long: _trade = tradeManager.BuyMarket(Symbol, coins); break; case TradeType.Short: _trade = tradeManager.SellMarket(Symbol, coins); break; } if (_trade != null) { _state = StrategyState.Opened; } } }