alex30774

 
Уровень 20

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2151



РЕКОМЕНДУЮ



Переписать функцию из мт4 в МТ5

Здравствуйте Андрей, перепишите пожалуйста функцию «isCloseLastPosByStop»(Возвращает флаг закрытия последней позиции по стопу) из мт4 в мт5.
Вот сама функция

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по стопу.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, osl;
  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 (mn<0 || OrderMagicNumber()==mn) {
              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);
    osl=NormalizeDouble(OrderStopLoss(), dg);
    if (ocp==osl) return(True);
  }
  return(False);
}
  • 0
  • Просмотров: 911
  • 17 сентября 2023, 10:18
  • alex30774
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Робот- закрывашка
Следующая запись в группе  
Прошу написать советник
16 сентября 2023
18 сентября 2023

Брокер для ваших роботов, 15 лет на рынке

Комментарии (3)

+
+1
на 19-е
avatar

  35  AM2 Сообщений: 16420 - Андрей

  • 17 сентября 2023, 13:37
+
+1
готово:


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Stop(string symb, ulong magic)
  {
   HistorySelect(0,TimeCurrent());

   ulong ticket=0;

   for(int i=HistoryDealsTotal()-1; i>=0; i--)
     {
      if(PositionGetString(POSITION_SYMBOL)==symb)
        {
         if(PositionGetInteger(POSITION_MAGIC)==magic)
           {
            if((ticket=HistoryDealGetTicket(i))>0)
              {
               if(HistoryDealGetInteger(ticket,DEAL_REASON)==DEAL_REASON_SL)
                  return(true);
              }
            break;
           }
        }
     }
   return(false);
  }
avatar

  35  AM2 Сообщений: 16420 - Андрей

  • 17 сентября 2023, 15:09
+
0
Спасибо большое.
avatar

  20  alex30774 Автор Сообщений: 768

  • 17 сентября 2023, 15:25

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий