удаляет только BUYSTOP, а SELLLIMIT не удаляет

 


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

Почему у меня удаляет только BUYSTOP, а SELLLIMIT не удаляет?? Хотя открыты два ордера!

if (Hour()==19 && Minute()==00 && Кризис_1989==true)
            {
             for( int i=1; i<=OrdersTotal(); i++)          
      {
             if(OrderSelect(i-1,SELECT_BY_POS)==true) 
               {                                       
                if(OrderType()==OP_SELLLIMIT  && OrderSymbol()==Symbol())
                  {
                  OrderDelete(OrderTicket()); 
                  }//if
  
                if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol())
                  {
                  OrderDelete(OrderTicket()); 
                  }//if
               }//if
            return(0);
            }
          }     
 
a.DarkAngel:


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

Почему у меня удаляет только BUYSTOP, а SELLLIMIT не удаляет?? Хотя открыты два ордера!

Попробуйте такой цикл и посмотрите на ошибку

int i,ticket;
            
             for ( i=OrdersTotal()-1; i>=0; i--)       //Цикл по всем ордерам,..     
               {                  
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                     {
                       
                        if( OrderType() == OP_BUYLIMIT )
                           {
                              ticket=OrderDelete(OrderTicket());
                              if(ticket<0){Print("OrderClose failed with error #",GetLastError());}
                           }
                        if( OrderType() == OP_SELLLIMIT )
                           {
                              ticket=OrderDelete(OrderTicket());
                              if(ticket<0){Print("OrderClose failed with error #",GetLastError());}
                           }
                        if( OrderType() == OP_BUYSTOP )
                           {
                              ticket=OrderDelete(OrderTicket());
                              if(ticket<0){Print("OrderClose failed with error #",GetLastError());}
                           }
                        if( OrderType() == OP_SELLSTOP )
                           {
                              ticket=OrderDelete(OrderTicket());
                              if(ticket<0){Print("OrderClose failed with error #",GetLastError());}
                           }                                                                                                              
                     }                                                                                                                                                                     
               }
 
Спасибо, задача решена! С тем циклом чтото не так было! Но что?
 
a.DarkAngel:
Спасибо, задача решена! С тем циклом чтото не так было! Но что?
Перебор ордеров в обратном порядке.