private void ClosePositionByStopLoss(DataSample sample)
 {
     Position.ClosePrice     = Position.StopLossPrice;
     Position.CloseTimestamp = sample.Candle.Timestamp;
     PlayedPositions.Add(Position);
     this.OnClosePositionByStopLoss(Position);
     Position = null;
 }
 private void ClosePosition(PositionDirection direction, bool byStopLoss, DataSample sample)
 {
     Position.ClosePrice     = sample.Candle.Close;
     Position.CloseTimestamp = sample.Candle.Timestamp;
     PlayedPositions.Add(Position);
     this.OnClosePosition(Position);
     Position = null;
 }
        /// <summary>
        /// Запуск стратегии
        /// </summary>
        /// <param name="ticker">Валютная пара</param>
        public void Run(string ticker, Timeframe timeFrame, decimal initialAmount, string currency)
        {
            ProfitRate     = 0;
            CurrentBalance = initialAmount;
            PlayedPositions.Clear();
            SetCurrentPosition();

            while (ShouldContinue(ticker, timeFrame))
            {
                Execute(PrepareData(GetData(ticker, timeFrame)), ticker, GetAmount(initialAmount, currency));
            }

            this.ProfitRate = CalculateProfitRate(initialAmount);
            this.OnStop();
        }