На каком баре был закрыт последний ордер
(функция 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));
}