Чт. Ноя 21st, 2024

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

(функция MQL4)

Иногда нужно знать, на каком по счету баре был закрыт последний ордер. Например, если ордер уже был закрыт на текущем баре (т.е. на нулевом), то можно не допустить нового открытия ордера здесь же.

Параметры функции:

Sy — Торговый инструмент;

tf — таймфрейм;

op — операция бай или селл;

mn — магик.

int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal();
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}

от drivermql

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.