Закрылся ли последний ордер по тейк-профиту?

Функция mql4: закрылся ли предыдущий ордер по тейк-профиту?

Функция возвращает: если true — по тейку, false — еще как-то. Нажмите лайк и функция откроется.[sociallocker]

bool isCloseLastPosByTake(string sy="", int op=-1, int magic=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (OrderMagicNumber() == magic || OrderMagicNumber() == -1) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
}

[/sociallocker]
Входные данные:

Sy- символ;

op — тип ордера OP_BUY или OP_SELL (-1 — любой тип);

magic — если -1 ордер с любым магиком или вообще без магика (ручной ордер).

Вот и все. Приятных вам функций!


Поделись с друзьями:

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *