Скачать MetaTrader 5

Время модификации ордера

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

Добрый вечер!

Пожалуйста, посоветуйте - где можно посмотреть код (функцию) для модификации ордера через 1 и через 2 бара после открытия?

Например, позиция открыта в 13.00. Соответственно, в 14.00 (через 1 бар) я хочу модифицировать открытую позицию первый раз, а в 15.00 (через 2 бара) - второй раз.

Я перепробовал сам множество способов, но, универсальную версию сделать не получается. Хотелось бы проверенный вариант, чтобы буквально работал как часы.

Заранее спасибо за помощь!

Михаил
1025
Михаил  

у кимива есть функция которая возвращает номер бара, на котором была открыта позиция. определяете что позиция открылась два бара назад, и проводите модификацию

//+----------------------------------------------------------------------------+
//|  Возвращает номер бара открытия последней позиции или -1.                  |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий таймфрейм)                |
//|    op  - операция                  (-1 - любая позиция)                    |
//|    mn  - MagicNumber               (-1 - любой магик)                      |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sym="", int tf=0, int op=-1, int mn=-1) {
  datetime oot;
  int      i, k=OrdersTotal();
 
  if (sym=="") sym=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sym) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (oot<OrderOpenTime()) oot=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sym, tf, oot, True));
}
Пример использования:
if (NumberOfBarOpenLastPos()>0) {
  // Можно открывать позиции
}
concord99
514
concord99  
dmmikl86:

у кимива есть функция которая возвращает номер бара, на котором была открыта позиция. определяете что позиция открылась два бара назад, и проводите модификацию

Пример использования:


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