Какая конструкция правильная?

 

Такая  

void Close_All()
{
  int Total = OrdersTotal();
  for (int i=0; i < Total; i++)   //требует уточнения эта строка                                                     
  {                                                                                          
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
    {
      switch(OrderType())
      {
        case OP_BUY : OrderClose(OrderTicket(),OrderLots(),Bid,5); break;
        case OP_SELL: OrderClose(OrderTicket(),OrderLots(),Ask,5); break;
        default     : break;
      }        
    }
  }  
} 

или такая...

void Close_All()
{
  int Total = OrdersTotal();
  for (int i=1; i <= Total; i++)                                                        
  {                                                                                          
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
    {
      switch(OrderType())
      {
        case OP_BUY : OrderClose(OrderTicket(),OrderLots(),Bid,5); break;
        case OP_SELL: OrderClose(OrderTicket(),OrderLots(),Ask,5); break;
        default     : break;
      }        
    }
  }  
}

 и будет ли эта функция закрывать все ордера? 

У меня закрывает почему-то только один ордер, не могу понять причину. 

 
Обе фтопку.
 
TheXpert:
Обе фтопку.


Пачиму?
 
valenok2003:


Пачиму?


А патамушта лучше так:

int Total = OrdersTotal();
  for (int i=Total; i>=1; i--)
   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
...
 
valenok2003:


Пачиму?
ПАТАМУ, что ни один из Ваших вариантов не закроет ВСЕ ордера, если их больше 1-го.
 

даже один единственный ордер... может не закрыть...

 

OrdersTotal() - Возвращает общее количество открытых и отложенных ордеров

Для OrderSelect() - нумерация начинается с единицы или с нуля?

 
valenok2003:

OrdersTotal() - Возвращает общее количество открытых и отложенных ордеров

Для OrderSelect() - нумерация начинается с единицы или с нуля?

Подумайте, что происходит с нумерацией после закрытия, хотя бы одного ордера.

Нумерация начинается с нуля.

 
Первая в принципе правильная, закроет все ордера, только надо цены закрытия нормализовать. Вторая фтопку, не все ордера закроет(цикл не верно составлеен)
 

Ага, въехал,много праздников плохо на мозги влияет. ))))

Спасибо! 

 
Techno:
Первая в принципе правильная, закроет все ордера, только надо цены закрытия нормализовать. Вторая фтопку, не все ордера закроет(цикл не верно составлеен)


не закроет.

если не верите, проведите эксперемент на демо.

Причина обращения: