Проблемы с OrderModify()

 
for ( int j = OrdersTotal() - 1; j >= 0; j -- )
    {
    
        
        if(OrderSelect(j,SELECT_BY_POS))
       {
    
     if(OrderType()==OP_SELL) 
       {  
        if(OrderTicket()!=ticket)
            {
           
            if(OrderOpenPrice()-Ask>=OrderStopLoss()-OrderOpenPrice())
               { 
                 ticket=OrderTicket(); 
                  Alert(OrderTicket()+" "+OrderTakeProfit()+" "+OrderOpenPrice()+" "+(OrderOpenPrice()-delta*Point));
                 OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-delta*Point,OrderTakeProfit(),0);
                
               }
            }   
       
       }
     } 

Здравствуйте. Проблема в следующем: в таком виде кода "как есть" некоторые ордера модифицируются, а некоторые нет с ошибкой  №130. NormalizeDouble() не помогает...Алертами выводил все параметры-все отлично! ВСЕ ордера начинают модифицироваться без ошибок только, если убрать условие  if(OrderTicket()!=ticket).  В чем может быть проблема? 

 
Ermak1243:

Здравствуйте. Проблема в следующем: в таком виде кода "как есть" некоторые ордера модифицируются, а некоторые нет с ошибкой  №130. NormalizeDouble() не помогает...Алертами выводил все параметры-все отлично! ВСЕ ордера начинают модифицироваться без ошибок только, если убрать условие  if(OrderTicket()!=ticket).  В чем может быть проблема? 

А что другое можно ожидать если модифицировать нужно не тот ордер который задумано???

Примерно так:

Хочу торт,  но если то что вы мне даёте не торт, то давайте...

 
Ermak1243:

Здравствуйте. Проблема в следующем: в таком виде кода "как есть" некоторые ордера модифицируются, а некоторые нет с ошибкой  №130. NormalizeDouble() не помогает...Алертами выводил все параметры-все отлично! ВСЕ ордера начинают модифицироваться без ошибок только, если убрать условие  if(OrderTicket()!=ticket).  В чем может быть проблема? 

Здесь не хватает проверок. Странную проверку if(OrderTicket()!=ticket) лучше заменить на if( OrderSymbol() == Symbol() ). Это исключит попытки модификации ордеров с другим символом.

Затем, нужно проверить допустимость уровня выставляемого стоплосса. Потом, может уже такой стоп установлен.  Затем только нормализовать, и пытаться модифицировать.

 
AlexeyVik:

А что другое можно ожидать если модифицировать нужно не тот ордер который задумано???

Примерно так:

Хочу торт,  но если то что вы мне даёте не торт, то давайте...

Эта проверка задумывалась для того, чтобы перенос в безубыток проходил 1 раз, а затем, если выполняется условия (OrderTicket()==ticket), то начинает работать трал по этой же позиции. 
 
Mislaid:

Здесь не хватает проверок. Странную проверку if(OrderTicket()!=ticket) лучше заменить на if( OrderSymbol() == Symbol() ). Это исключит попытки модификации ордеров с другим символом.

Затем, нужно проверить допустимость уровня выставляемого стоплосса. Потом, может уже такой стоп установлен.  Затем только нормализовать, и пытаться модифицировать.

Всем спасибо за помощь!) Нашел нужную проверку:)
Причина обращения: