Скачать MetaTrader 5

Закрытие всех ордеров по окончании торговой сессии

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
igorvg74
40
igorvg74  
Подскажите пожалуйста, существует ли скрипт для закрытия всех ордеров по окончании торговой сессии?Заранее спасибо.
Yury Reshetov
13496
Yury Reshetov  
igorvg74:
Подскажите пожалуйста, существует ли скрипт для закрытия всех ордеров по окончании торговой сессии?Заранее спасибо.
Если по окончании не выходные, то можно и советником (не скриптом, т.к. скрипт придётся активировать вручную).
igorvg74
40
igorvg74  
Не подскажите советника или скрипт?
Vitaly Muzichenko
7646
Vitaly Muzichenko  
igorvg74:
Не подскажите советника или скрипт?

Вроде так должно работать

extern string TimeDelOrders  = "23:57";     // Время удаления ордеров

//+----------------------------------------------------------------------------+
//| Функция                                                                    |
//+----------------------------------------------------------------------------+
void OnTick()
 {
  if(TimeToStr(TimeCurrent(), TIME_MINUTES)>=TimeDelOrders)
   {
    DeleteOrders();
   }
 }

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров.                                               |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  bool res;
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
           res=OrderDelete(OrderTicket(), clrNONE);
          }
        }
      }
    }
  }
}
igorvg74
40
igorvg74  
Vitaly Muzichenko:

Вроде так должно работать

Спасибо попробую.
Renat Akhtyamov
7733
Renat Akhtyamov  
igorvg74:
Спасибо попробую.
Там у него только лимитки удаляются. Внимательнее.
igorvg74
40
igorvg74  
Понял. Спасибо.
Vitaly Muzichenko
7646
Vitaly Muzichenko  
new-rena:
Там у него только лимитки удаляются. Внимательнее.
Почему только лимитники? Вы очень не внимательны, там удаляет все ордера!
Renat Akhtyamov
7733
Renat Akhtyamov  
Vitaly Muzichenko:
Почему только лимитники? Вы очень не внимательны, там удаляет все ордера!
отложки я имел ввиду
Vitaly Muzichenko
7646
Vitaly Muzichenko  
new-rena:
отложки я имел ввиду
Я дал код именно того, что просил ТС: (с)"закрытия всех ордеров"
Alexander Bereznyak
24769
Alexander Bereznyak  

там не закрытие, там удаление, Delete дословно по английски удаление

в комментарии функции  написано "Удаление ордеров"

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