/// <summary>
        /// Closes the trade if price crosses the upper/lower bollinger band.
        /// </summary>
        /// <param name="candles">candle history</param>
        /// <param name="bar">currentcandle</param>
        /// <param name="tradeManager">tradeManager</param>
        private void CloseTradeIfPossible(List <MarketCandle> candles, int bar, ITradeManager tradeManager)
        {
            var candle = candles[bar];
            var bbands = new BollingerBands(candles, bar);

            // for long we close the trade if price  gets above the upper bollinger bands
            if (_trade.TradeType == TradeType.Long && candle.HighPrice > bbands.Upper)
            {
                if (tradeManager.Close(_trade, candle.HighPrice))
                {
                    _state = StrategyState.Scanning;
                    _trade = null;
                    return;
                }
            }

            // for short we close the trade if price  gets below the lowe bollinger bands
            if (_trade.TradeType == TradeType.Short && candle.LowPrice < bbands.Lower)
            {
                if (tradeManager.Close(_trade, candle.LowPrice))
                {
                    _state = StrategyState.Scanning;
                    _trade = null;
                    return;
                }
            }
        }
        private void ClosePosition(double[] ema)
        {
            var currentBar = _chart.Current;
            var position   = _tradeManager.GetOrders(_magicNumber).Select(x => x.Type).Single();

            switch (position)
            {
            case OrderType.Buy when SellSignal(ema):
            case OrderType.Sell when BuySignal(ema):
                _tradeManager.Close(_chart, currentBar.Open, _magicNumber);

                break;
            }
        }