Закрытие всех ордеров

 
Помогите составить рациональную функцию по закрытию всех ордеров(и buy и sell), просто не знаю как сделать так, чтобы советник после закрытия одного не возвращался в начало.
 
Red.Cloud:
Помогите составить рациональную функцию по закрытию всех ордеров(и buy и sell), просто не знаю как сделать так, чтобы советник после закрытия одного не возвращался в начало.


Скрипт

int start()
{  
   int total=OrdersTotal()-1;
   for (int i=total;i>=0;i--)
     {
        if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
        if (OrderType()<2) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),15,CLR_NONE);
        else OrderDelete(OrderTicket());
     }
}

Писал на коленке, могут быть ошибки

 
Vinin:


Скрипт

Писал на коленке, могут быть ошибки


void close()
{
int total=OrdersTotal()-1;
for (int i=total;i>=0;i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderType()<2) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),15,CLR_NONE);
else OrderDelete(OrderTicket());
}
}
а если вот так, но что нужно добавить, чтобы советник не выходил из этой функции пока не закроет все ордера?
 
Vinin:


Скрипт

Писал на коленке, могут быть ошибки


У незакрытого ордера нет цены закрытия.
 
PapaYozh:

У незакрытого ордера нет цены закрытия.

Проверь прежде чем говорить
 
Red.Cloud:

void close()
{
int total=OrdersTotal()-1;
for (int i=total;i>=0;i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderType()<2) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),15,CLR_NONE);
else OrderDelete(OrderTicket());
}
}
а если вот так, но что нужно добавить, чтобы советник не выходил из этой функции пока не закроет все ордера?

Он и должен закрыть все ордера, свои, чужие - все закрыть. Хотя нужна обработка ошибок еще. Вдруг по каким-то причинам какой-то ордер будет не закрыт
 
Vinin:

Проверь прежде чем говорить

т.е. имеем дело с недокументированной возможностью?
 
PapaYozh:

т.е. имеем дело с недокументированной возможностью?

Ну да, которой конечно лучше не пользоваться
Причина обращения: