Ср. Апр 24th, 2024

Функция 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 ордер с любым магиком или вообще без магика (ручной ордер).

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


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

от drivermql

4 комментария к «Закрылся ли последний ордер по тейк-профиту?»
  1. Почему не публикуете сообщения, нахрена тогда добавлять комментарии тратить свое время, если функции кривые или не полностью описано как их прикручивать, как в этом разбираться, если вы коменты удаляете.

    drivermql Reply:

    инициализируете t нулём. Это легко делается.

  2. Функция не работает.

    ‘isCloseLastPosByTake’ — function declarations are allowed on global, namespace or class scope only
    possible use of uninitialized variable ‘t’
    possible loss of data due to type conversion
    expression not boolean
    expression not boolean
    1 errors, 4 warnings

    drivermql Reply:

    переведите гуглом и поймете. Дело не в функции, а в том, как Вы ее используете

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

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

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