Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Поделись своими разработками. Это увеличит твой рейтинг.
MrSnaKe
94
MrSnaKe 2014.10.08 15:54 

Привет все,

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

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

       }

      }

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

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

MrSnaKe
94
MrSnaKe 2014.10.08 16:05  
точнее оно на одном тике закрывает на бай и отложки на бай а на втором на сел и отложки на сел
pako
3340
pako 2014.10.08 16:09  
for( int i = OrdersTotal()-1; i >= 0; i--)
Alexey Viktorov
5172
Alexey Viktorov 2014.10.08 16:12  

Направление цикла надо поменять. От 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());
     }
   }
}/*******************************************************************/
MrSnaKe
94
MrSnaKe 2014.10.08 21:16  
AlexeyVik:

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

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

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

_Symbol 

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

Vitalie Postolache
10989
Vitalie Postolache 2014.10.08 21:21  
MrSnaKe:

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

_Symbol 

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

обновляйте программы вовремя, или пользуйте старые обозначения, если упорствуете (Symbol() и сейчас работает).
MrSnaKe
94
MrSnaKe 2014.10.09 13:45  
Еще один вопрос у меня закрытие работает на тику и получаются накладки как сделать обработку например каждые 10 секунд или минуту?
Vitalie Postolache
10989
Vitalie Postolache 2014.10.09 13:48  
Обработку можно устроить по таймеру. Для этого надо все нужные команды вписать в функцию OnTimer().
MrSnaKe
94
MrSnaKe 2014.10.09 13:52  
а можно с примером?
MrSnaKe
94
MrSnaKe 2014.10.09 13:53  
а EventSetTimer() надо в OnInit(); добавить?
Vitalie Postolache
10989
Vitalie Postolache 2014.10.09 14:44  
MrSnaKe:
а EventSetTimer() надо в OnInit(); добавить?
да, туда.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий