MQL4 - automated forex trading   /  

Форум

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

К списку тем  | 1 2 3 4 5 6 7 8 Авторизуйтесь или зарегистрируйтесь, чтобы создать новую тему

avatar
1759
valenok2003 15.06.2010 15:45 

Такая  

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;
      }        
    }
  }  
}

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

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

Бесплатная Groupware для групп разработчиков

Установите систему групповой работы TeamWox и объедините усилия всех разработчиков. Это поможет вашей команде работать быстрее и организованнее. Благодаря TeamWox станет намного проще ставить задачи и контролировать их выполнение.


avatar
7055
TheXpert 15.06.2010 15:46 
Обе фтопку.

avatar
1759
valenok2003 15.06.2010 15:47 
TheXpert:
Обе фтопку.


Пачиму?

avatar
662
Bicus 15.06.2010 15:50 
valenok2003:


Пачиму?


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

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


avatar
3033
PapaYozh 15.06.2010 15:54 
valenok2003:


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

avatar
1632
DDFedor 15.06.2010 15:58 

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


avatar
1759
valenok2003 15.06.2010 16:10 

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

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


avatar
872
vasya_vasya 15.06.2010 16:12 
valenok2003:

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

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

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

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


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

avatar
1759
valenok2003 15.06.2010 16:19 

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

Спасибо! 


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


не закроет.

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

К списку тем   | 1 2 3 4 5 6 7 8  

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий