Закритие позиций

 

Привет все,

Надо закрыть несколько ордеров например

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

     {

      if (OrderSelect(i, SELECT_BY_POS)==true)

       {  

        if (OrderType() == OP_BUY) { OrderClose(OrderTicket(),OrderLots(),Bid,10,Yellow);}

        if (OrderType() == OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,10,Yellow);}

        if (OrderType() == OP_BUYSTOP || OrderType( )== OP_SELLSTOP) {OrderDelete(OrderTicket(), Yellow);}  

       }

      }

 но так как фкнция работает на каждом тике она не успевает все закрыть

 подскажите как сделать если надо в какой то момент(когда наступит собитие) закрылись все позиции (открытые и отложеные )

 
точнее оно на одном тике закрывает на бай и отложки на бай а на втором на сел и отложки на сел
 
for( int i = OrdersTotal()-1; i >= 0; i--)
 

Направление цикла надо поменять. От OrdersTotal()-1 до 0

Держи готовую функцию.

void Close_Delete()/*********************Закрытие/удаление ордеров*********************/
{
   bool res;
    int i, totalC = OrdersTotal();
  for(i = totalC; i >= 0 ; i--)
   {
    if(OrderSelect(i, SELECT_BY_POS) && OrderSymbol() == _Symbol && OrderMagicNumber() == Magic)
     {
      if(OrderType() < 2)
       res = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 40);
      if(OrderType() > 1)
       res = OrderDelete(OrderTicket());
     }
   }
}/*******************************************************************/
 
AlexeyVik:

Направление цикла надо поменять. От OrdersTotal()-1 до 0

Держи готовую функцию.

мета едитор говорит что он незнает

_Symbol 

 надо какую то библиотеку подключать?

 
MrSnaKe:

мета едитор говорит что он незнает

_Symbol 

 надо какую то библиотеку подключать?

обновляйте программы вовремя, или пользуйте старые обозначения, если упорствуете (Symbol() и сейчас работает).
 
Еще один вопрос у меня закрытие работает на тику и получаются накладки как сделать обработку например каждые 10 секунд или минуту?
 
Обработку можно устроить по таймеру. Для этого надо все нужные команды вписать в функцию OnTimer().
 
а можно с примером?
 
а EventSetTimer() надо в OnInit(); добавить?
 
MrSnaKe:
а EventSetTimer() надо в OnInit(); добавить?
да, туда.
Причина обращения: