Чудный ордер

 

А именно самый первый открытый ордер, не хочет закрываться и все тут.... причем "чудо" проявляется как в тестере, так и при реальной торговле на демке.

Подскажите плиз где засада???

if (Buy)
     {
      for(i=OrdersTotal(); i>0;i--)
           {
            if(OrderSelect(i,SELECT_BY_POS))
              {
               if (OrderType() == OP_SELL)                        
               OrderClose( OrderTicket(),OrderLots(), Ask, 20, 0 );  
              }
           }     
     }
     
   if (Sell)
     {
      for(i=OrdersTotal(); i>0;i--)
           {
            if(OrderSelect(i,SELECT_BY_POS))
              {
               if (OrderType() == OP_BUY)                        
               OrderClose( OrderTicket(),OrderLots(), Bid, 20, 0 );  
              }
           }
     }
 
for(i=OrdersTotal() - 1 ; i >= 0; i--)
 

Что-то со счетчиком, наверно. Попробуй

for(i=OrdersTotal()-1; i>=0;i--)

Или даже

for(i=0; i<OrdersTotal();i++)
 
Mathemat:

Что-то со счетчиком, наверно. Попробуй

Или даже

for(i=OrdersTotal()-1; i>=0;i--)
Этот вариант при закрытии верен. 
 

Вам же уже указали на ошибку.

Замените

for(i=OrdersTotal(); i>0;i--)

на

for(i=OrdersTotal()-1; i>=0;i--)
 
Mathemat:

Что-то со счетчиком, наверно. Попробуй

Или даже

Однако и правда!!! Оба варианта верны.

Спасибо Алексей!!! 

 
Europa:

Однако и правда!!! Оба варианта верны.

Спасибо Алексей!!!


Верен там только первый.
 
PapaYozh:

Верен там только первый.

Со вторым тоже закрывает
 
Europa:

Со вторым тоже закрывает

второй вариант будет закрывать с пропусками (если ордеров должно закрыться больше 1-го, то они будут закрываться через один)
 
Склоняюсь к тому, что этот вариант все же "устойчивее":
for(i=OrdersTotal()-1; i>=0;i--)
 
PapaYozh:

второй вариант будет закрывать с пропусками (если ордеров должно закрыться больше 1-го, то они будут закрываться через один)

Вот второй вариант for(i=0; i<OrdersTotal();i++)

Закрывает все пачками и ПЕРВЫЙ ТОЖЕ!!! еще раз спасибо!