Добрый день. Так до конца и не решил проблему. Мешает мелочь, но не пойму какая. По вашей подсказке стоплосс ставится, но только первый правильный, потом надо выбирать, как и положено:double sl;
sl=op-Stoploss*Point;
ticket=OrderSend(Symbol(),OP_BUYSTOP,lot,NormalizeDouble(op,Digits),Slippage, NormalizeDouble(sl,Digits),0,NULL,Magic,0,Blue);
Здесь op цена открытия отложенного ордера.
В этом случае стоп лосс ставится вместе с ордером, на расстоянии от цены открытия без учёта спреда.
RefreshRates();
SL=OrderOpenPrice() + StopLoss*Point; // Вычисление стоплосса от открытия отложенного ордера
Ret=OrderSend(Symb,OP_SELLLIMIT,Lots,HL,30,SL,0,"",1,0,Red);
Поэтому использую OrderSelect:
RefreshRates();
if(OrderSelect(Ret, SELECT_BY_TICKET)==true)
SL=OrderOpenPrice() + StopLoss*Point; // Вычисление стоплосса от открытия отложенного ордера
Ret=OrderSend(Symb,OP_SELLLIMIT,Lots,HL,30,SL,0,"",1,0,Red);
Но тогда стоплоссы перестают ставится совсем, я не пойму почему... Подскажите, pls., если не трудно...
Может, я невнятно объяснил, без OrderSelect стоплоссы ставиться продолжают, но только первый расчетный и правильный, остальные устанавливаются на произвольные расстояния, что, естественно, не годится...
Последнее редактирование: