Функция 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. Почему не публикуете сообщения, нахрена тогда добавлять комментарии тратить свое время, если функции кривые или не полностью описано как их прикручивать, как в этом разбираться, если вы коменты удаляете.

  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

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

Добавить комментарий для ВВВ Отменить ответ

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

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