private void OpenOrder(int dealSign, string symbol, CandleDataBidAsk lastCandle) { // функция считает и округляет объем входа var volume = CalculateVolume(symbol, base.Leverage); if (volume == 0) { events.Add(string.Format("{0} {1} отменена - объем равен 0", dealSign > 0 ? "покупка" : "продажа", symbol)); return; } var enterPrice = dealSign > 0 ? lastCandle.closeAsk : lastCandle.close; var point = pointCost[symbol]; var stopLoss = enterPrice - dealSign * (float)point * StopLossPoints; var takeProfit = enterPrice + dealSign * (float)point * TakeProfitPoints; var order = new MarketOrder { Symbol = symbol, // Инструмент по которому совершается сделка Volume = volume, // Объём средств, на который совершается сделка Side = dealSign, // Устанавливаем тип сделки - покупка или продажа StopLoss = stopLoss, // Устанавливаем величину Stop loss для открываемой сделки TakeProfit = takeProfit, // Устанавливаем величину Take profit для открываемой сделки ExpertComment = "TornAssholeRobot" // Комментарий по сделке, оставленный роботом }; var status = NewOrder(order, OrderType.Market, // исполнение по рыночной цене - можно везде выбирать такой вариант 0, 0); // последние 2 параметра для OrderType.Market не имеют значения if (status != RequestStatus.OK) { events.Add(string.Format("Ошибка добавления ордера ({0}): {1}", order.ToStringShort(), status)); } }