private void OpenDeal(float price, int dealSide) { var dealVolumeDepo = CalculateVolume(ticker); if (dealVolumeDepo == 0) { return; } // Посчитать stopLoss и takeProfit stopLoss = StopLossPoints == 0 ? dealSide > 0 ? extremumQueue.Min(q => q.a) : extremumQueue.Max(q => q.a) : price - dealSide * DalSpot.Instance.GetAbsValue(ticker, (float)StopLossPoints); takeProfit = TakeProfitPoints == 0 ? extremumQueue.First.a : price + dealSide * DalSpot.Instance.GetAbsValue(ticker, (float)TakeProfitPoints); // очистить очередь экстремумов extremumQueue.Clear(); // открыть сделку robotContext.SendNewOrderRequest( protectedContext.MakeProtectedContext(), RequestUniqueId.Next(), new MarketOrder { AccountID = robotContext.AccountInfo.ID, Magic = Magic, Symbol = ticker, Volume = dealVolumeDepo, Side = dealSide, StopLoss = stopLoss, TakeProfit = takeProfit * TakeRange / 100, ExpertComment = "DoubleTopRobot" }, OrderType.Market, 0, 0); }