Советник не видит ордер - почему?

 

Здравствствуйте,

подскажите что может мешать видеть ордер во время его поиска.

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

Ордера которых больше видит и модифицирует, а ордер с другим магиком и он же ОДИН единственный открытый на бай - не видит. Есть второй с таким магиком но на селл - он не интересует, хотя в журнале во время переборке в цикле определяется без проблем.

Принтовал, проверял, оказалось, что тип ордера ОДНОГО единственно открытого на бай он не может определить, т.е. дойдя до проверки типа ордера и не сумев определить его ка ОP_BUY, уходит на следующую итерацию, игнорируя, естественно, команду на изменение стоп-лосса.

И ещё один момент. Если перед проверкой на изменение стоп-лосса выбрать этот ОДИН единственный ордер по тикету (тикет этого ордера знаю, так как в тестере уже сутки гоняю чтобы решить проблему), то в журнале без проблем принтуются все данные этого ордера: и тип ордера, и цена открытия, и его магик.

Подскажите, пожалуйста, это моя ошибка или может глюк самого МетаЕдитора? Просто уже устал бороться с этой проблемой руки опускаются.

 

наверно помочь можно только если видеть объект,


хотя у нас давно уже телепатические свойства выработались.

 
Как говорится, "бригада телепатов уже выехала" :) где код?
 
alexnau:


Вы рассказали как звучит музыка. Теперь - ноты, пожалуйста.
 
Этот ордер это сработавшая отложка?
 
Necron:
Как говорится, "бригада телепатов уже выехала" :) где код?

ГДЕ КАРТА, БИЛЛИ? (это к топикстартеру)
 
alexnau:


это моя ошибка или может глюк самого МетаЕдитора?


это ваша ошибка.
 
TheXpert:
Этот ордер это сработавшая отложка?

Да - это сработавшая отложка. Именно так.
 
alexnau:

Вот код.


   if (Bid-modSL>MarketInfo("EURUSD",MODE_STOPLEVEL)*Point) {
      for(i=OrdersTotal();i>=0;i--) {
         Print("Mode Re-Setup 5");
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if(OrderSymbol()!=Symbol()) continue;
         if(OrderSymbol()==Symbol()) {
            if (OrderMagicNumber()==magic_2) {
               Print("Mode Re-Setup 5-1");
               if(OrderType()==OP_BUY) {
                  if (modSL>OrderStopLoss()) {
                     OrderModify(OrderTicket(),OrderOpenPrice(),modSL,OrderTakeProfit(),2,LightBlue); 
                     }
                  } 
               }
            }
         }   
             
      OrderSelect(15, SELECT_BY_TICKET, MODE_TRADES); // берем невидимый ордер для принтовки его данных
      Print("OrderTicket() = ",OrderTicket(),"     OrderType() = ",OrderType(),"     OrderOpenPrice() = ",OrderOpenPrice(),"     OrderMagicNumber() = ",OrderMagicNumber());
            
      for(i=OrdersTotal();i>0;i--) {
         Print("Mode Re-Setup 6");
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         Print("OrderTicket() = ",OrderTicket(),"     OrderType() = ",OrderType(),"     OrderMagicNumber() = ",OrderMagicNumber());
         if(OrderSymbol()!=Symbol()) continue;
         if(OrderSymbol()==Symbol()) {
            Print("Mode Re-Setup 6-3");
            if (OrderMagicNumber()==magic_1) {
               Print("Mode Re-Setup 6-4");
               if(OrderType()==0) {
                  if (modSL>OrderStopLoss()) {
                     Print("Mode Re-Setup 6-5");
                     OrderModify(OrderTicket(),OrderOpenPrice(),modSL,OrderTakeProfit(),2,LightBlue); 
                     }   
                  }
               }
            }
         } 
      } 
 

MarketInfo(14)

это что? 

 

 

OrderSelect(15, SELECT_BY_TICKET, MODE_TRADES); // берем невидимый ордер для принтовки его данных

и что такое ордер 15 ? 

 
до куда на вашей распринтовке доходит эксп?
Причина обращения: