Можно ли OrderModify() применить несколько раз к одному ордеру?

 


Подскажите пожалуйста, не могу второй раз модифицировать ордер верней он модифицируется но вечно! , а надо потом третий и возможно четвёртый раз. ХЕЛП МИ ПЛИЗ

                                        не могу различить OrderModify() друг от друга , пытался функцию написать под сигнал к модификации тоже не получилось 





if(CountSell() == 0  && (Bid >= PriceX))

     {
      ticket =  OrderSend(Symbol(),OP_SELL, Lots,Bid, Slippage,  0, 0, "TMA Robot", Magic, 0, Red);


      if(ticket > 0)
        {



         if(OrderSelect(ticket, SELECT_BY_TICKET))
            if(!  OrderModify(ticket,Bid, SlSell(), TpSell(), 0,Green))
               Print("Ошибка модификации ордера на продажу 1");

        }
      else
         Print("Ошибка открытия ордера на продажу");

     }

   if(SigyPriceY()==1)
     {
      if(OrderSelect(ticket, SELECT_BY_TICKET))
         if(! OrderModify(ticket,Bid, SlSell(), TpSell(), 0,Green))

            Print("Ошибка модификации ордера на продажу 2");


     }

   GetLastError();

                       Здесь корявая функция

int SigyPriceY()

  {


   int sigy = 0;

     {

      if(NormalizeDouble(Bid*Point,Digits)==NormalizeDouble(PriceY*Point,Digits))


         sigy=1;

      else

         sigy=0;

     }



   return (sigy);

  }

 
Можно хоть сколько раз модифицировать. Важно, что бы параметры правильные были. Что бы отличались от имеющихся параметров ордера и что бы были в допустимых пределах по минимальному стопуровню.
 

Вот в том и проблемма что по параметрам OrderModify( ticket, price,tp,sl) я их отличить не могу и вторая модификация постоянно модифицирует! Как правильно их отличать? Ведь OrderModify() сам не может быть переменной!

 
OrderModify - Торговые функции - Справочник MQL4
OrderModify - Торговые функции - Справочник MQL4
  • docs.mql4.com
[in]  Цвет стрелок модификации StopLoss и/или TakeProfit на графике. Если параметр отсутствует, или его значение равно CLR_NONE, то стрелка на графике не отображается. Возвращает true при успешном завершении функции или false в случае ошибки. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). Цену открытия и время...
 
Parenyothek:

Вот в том и проблемма что по параметрам OrderModify( ticket, price,tp,sl) я их отличить не могу и вторая модификация постоянно модифицирует! Как правильно их отличать? Ведь OrderModify() сам не может быть переменной!

Ордера отличают друг от друга по тикету. Это уникальный идентификатор. Все остальное не уникальное, а, следовательно, по другим параметрам их различать нельзя, могут быть одинаковыми.

Ну а называть OrderModify() переменной - это уж перебор. 

 
Как по тикету? если я модифицирую один и тот же тикет. А вот по "стрелкам" вариант спасибо. А есть ещё варианты?
 

так попробуйте, в обоих случаях

OrderModify(ticket, OrderOpenPrice(), ....

Вы же пытаетесь изменить цену рыночного ордера

К сожалению, так нельзя.

 
Вообще не понятен вопрос. Что но вечно?
Как надо, чтоб работало?
 

Вечно это когда он постоянно модифицирует и не останавливается, а мне надо один раз при достижении цены индикатора PriceX, второй раз при достижении PriceY, и т.д.


 

 
Наверно проверять, что новая цена больше/меньше имеющейся и только в этом случае модифицировать.