При модификации ордера возникает ошибка 131

 

Отложенный ордер открывается, при модификации принтует 131 (неправильный объем).

Нормализацию ордера провожу, стоп левелы и заморозку проверяю, вообще убрал установку стопов и тейков.  Пробовал просто поставить лот 1.00 для проверки и все так же.

Попробовал на демо другого ДЦ все нормально работает. В поддержке говорят, что все нормально.

Знаю я это "нормально", когда деньги на кошельке сперли в поддержке кошелька тоже пели, что у них нормально, а на следующий день деньги исчезли.

Вообщем напишите, как решить эту проблему или она не решаема?

         
               test=MathAbs(price_-Price_);
               double FREEZELEVEL=MarketInfo(Symbol(),MODE_FREEZELEVEL);
               double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
              
               if(test>FREEZELEVEL && test>STOPLEVEL)
                 {
                  bool res=OrderModify(Ticket_,price_,0,0,tf,Magenta);
                  Print("res=",res);
                  if(!res)
                    {
                     Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
                     return;
                    }
                 }
 
forexman77:

Отложенный ордер открывается, при модификации принтует 131 (неправильный объем).

Нормализацию ордера провожу, стоп левелы и заморозку проверяю, вообще убрал установку стопов и тейков.  Пробовал просто поставить лот 1.00 для проверки и все так же.

Попробовал на демо другого ДЦ все нормально работает. В поддержке говорят, что все нормально.

Знаю я это "нормально", когда деньги на кошельке сперли в поддержке кошелька тоже пели, что у них нормально, а на следующий день деньги исчезли.

Вообщем напишите, как решить эту проблему или она не решаема?


какой то винегрет ... 

 
elmucon:

какой то винегрет ... 


По делу ответить можете или троллить пришли?

 
forexman77:

По делу ответить можете или троллить пришли?


что по делу - фигню какую то нацарапал а ты напрягай мозги решай проблему ... 

в коде ни коментов ни что по чём и откуда - кинул огрызок и хочет что бы всю картину нарисовали ... 

 
forexman77:

По делу ответить можете или троллить пришли?


а чё бы не потролить -раз есть кого ... 

 
Многое зависит от того, от куда вы Ticket_ взяли.
 

Неправильное сравнение двух вещественных чисел. Либо оба нормализуйте, либо (что лучше) сравнивайте разность с десятой частью пункта.

Ну а ошибка 131, скорее всего, появляется в другом месте кода. OrderModify не должен приводить к ней. Или же, перепутали номер ошибки со 130-й. Такая может возникать при OrderModify.

 
Oksana Berenko:
Многое зависит от того, от куда вы Ticket_ взяли.

Ticket_ правильный, в принты выводил он соответствует номеру, что в терминале, берется из цикла перебора ордеров.

   Total=0;                                     // Количество ордеров
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if(OrderSelect(i-1,SELECT_BY_POS)==true)  // Если есть следующий
        {                                       // Анализ ордеров:
         if(OrderSymbol()!=Symb)continue;       // Не наш фин. инструм
         Tip   =OrderType();                    // Тип выбранного орд.
         if(Tip!=1 && Tip!=3)continue;                    // Не наш тип ордера
         Total++;                               // Счётчик рыночн. орд
         Ticket=OrderTicket();                  // Номер выбранн. орд.
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
         if(Tip==1){tradeP(Ticket,Price,SL,TP);}
         if(Tip==3){tradeO(Ticket,Price,SL,TP);}
        }
     }
 
forexman77:

Ticket_ правильный, в принты выводил он соответствует номеру, что в терминале, берется из цикла перебора ордеров.


ну и что мы модифицируем если стопы и профиты остались без изменений

 
Ihor Herasko:

Неправильное сравнение двух вещественных чисел. Либо оба нормализуйте, либо (что лучше) сравнивайте разность с десятой частью пункта.

Ну а ошибка 131, скорее всего, появляется в другом месте кода. OrderModify не должен приводить к ней. Или же, перепутали номер ошибки со 130-й. Такая может возникать при OrderModify.


Нормализую лот так:

Lts=NormalizeDouble(1.00,Digits);
Ticket=OrderSend(Symb,OP_SELLLIMIT,Lts,price,20,0,0,NULL,0,tf,clrGreen);

пробовал еще вместо Digits просто 2 поставить.

Ошибка точно 131.

Отложенный ордер открывается, именно потом, когда условия меняются при модификации ошибка происходит. 

И строка:

Print("Ошибка модификации ордера. Код ошибки=",GetLastError());

есть только в этом блоке кода.

 
elmucon:

ну и что мы модифицируем если стопы и профиты остались без изменений


Цену открытия отложенного ордера. Если, что я и со стопами и тейками пробовал)