Проблема с MetaEditor'ом

 
Есть такой код :
...          
closeOrderType(OP_SELL);
Sells=1;
Buys=0;
startBid=Bid;
ErrorCheckOut(OrderSend(Symbol(),OP_SELL,LotsOptimized(OP_SELL),Bid,Slippage,0,0,"1MTS ордер Sell",magicNumup,0,Red));
...
Когда функция
closeOrderType(OP_SELL);
завершает свое выполнение, все последующие за ней операторы не выполняются.
Вот код функции:
int closeOrderType(int type)
   {
   int total =OrdersTotal();
  // int TradeAllow = _IsTradeAllowed();
   
  // if(type> OP_SELL) return(0);
   
  // if(TradeAllow == 0) RefreshRates(); 
 
 
   for(int pos=total;pos>=0;pos--)
   {
      if (OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==false) continue;  
      if (OrderMagicNumber()!=magicNumup) continue; 
      if (OrderSymbol()!=Symbol())continue; 
      if (OrderType()!=type)continue; 
      
      switch (OrderType())
      {
         case OP_BUY:
            OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue); 
            break;
 
         case OP_SELL:
            OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
            break;  
      }
   }      
   return(0); 
}
Решил проверить, а доходит ли дело до функции, вставил перед ней опертор Print :
Получилось так:
          Print("11111111"); 
          closeOrderType(OP_SELL);
              
           Sells=1;
           Buys=0;
           startBid=Bid;
           ErrorCheckOut(OrderSend(Symbol(),OP_SELL,LotsOptimized(OP_SELL),Bid,Slippage,0,0,"1MTS ордер Sell",magicNumup,0,Red));
И все заработало, опреаторы следующие за функцие стали выполняться.
Убираю принт, снова не работает. В чем может быть проблема?
 
Я бы вот в этой строчке написал по другому

for(int pos=total-1;pos>=0;pos--)
 
Vinin:
Я бы вот в этой строчке написал по другому

for(int pos=total-1;pos>=0;pos--)
Было и так :-) но в статье про грааль используеться

 for (int i=total; i>=0; i--)  
только смысла это не меняет :-( как на это влияет принт
 
dimontus:
Vinin:
Я бы вот в этой строчке написал по другому

for(int pos=total-1;pos>=0;pos--)
Было и так :-) но в статье про грааль используеться

 for (int i=total; i>=0; i--)  
только смысла это не меняет :-( как на это влияет принт

На Print это никак не влияет. Просто в метатрейдере принято, что массив от 0 до размерность-1.
И все. Проверь значения переменных перед ErrorCheckOut(). Может они нормально выполняются. А проблема в чем-то другом.
 
dimontus:
Решил проверить, а доходит ли дело до функции, вставил перед ней опертор Print :
Получилось так:
          Print("11111111"); 
          closeOrderType(OP_SELL);
              
           Sells=1;
           Buys=0;
           startBid=Bid;
           ErrorCheckOut(OrderSend(Symbol(),OP_SELL,LotsOptimized(OP_SELL),Bid,Slippage,0,0,"1MTS ордер Sell",magicNumup,0,Red));
И все заработало, опреаторы следующие за функцие стали выполняться.
Убираю принт, снова не работает. В чем может быть проблема?

Попробуйте перекомпилировать и прогнать код на самом последнем 204 билде от 11 мая 2007. Скачать можно здесь - http://www.metatrader4.com/files/mt4setup.exe
 
Все заработало, Спасибо.
Причина обращения: