Скачать MetaTrader 5

Каким кодом прописать автоматическое открытие ордера после закрытия предыдущего по ТР?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
mutantmoscow
44
mutantmoscow  
Каким кодом прописать автоматическое открытие ордера после закрытия предыдущего по ТР?
Sergey Gritsay
6580
Sergey Gritsay  
mutantmoscow:
Каким кодом прописать автоматическое открытие ордера после закрытия предыдущего по ТР?
if(StringFind(OrderComment(),"tp")>=0)
{
 тут код открытия ордера
}
Vladislav Andruschenko
95875
Vladislav Andruschenko  
if(StringFind(OrderComment(),"[tp]")>=0)
{
 тут код открытия ордера
}

 

 

 тогда лучше так. Потому что вдруг в комменте предыдущего ордера было название робота, по типу "tp-link"

 флаг закрытия последней позиции по ТП

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-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 (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(OrderSymbol(), 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);
}
Sergey Gritsay
6580
Sergey Gritsay  
Vladislav Andruschenko:

 

 

 тогда лучше так. Потому что вдруг в комменте предыдущего ордера было название робота, по типу "tp-link"

 флаг закрытия последней позиции по ТП

v мой пример с легкостью определяет из такого "tp-link" комментария закрытие по тп, главное что бы в дополнительном комментарии не было набора символов tp. я использую именно такой вариант и ни когда не было проблем, при этом мои советники пишут дополнительный комментарий к ордеру. В общем это решать топикастеру что ему больше нравиться, мы только привели примеры
mutantmoscow
44
mutantmoscow  
Благодарю вас!
Artyom Trishkin
Модератор
78790
Artyom Trishkin  
Vladislav Andruschenko:

 

 

 тогда лучше так. Потому что вдруг в комменте предыдущего ордера было название робота, по типу "tp-link"

 флаг закрытия последней позиции по ТП

[tp] и [sl] всегда дописываются к комментарию в отличие от цены закрытия, которая не всегда равна стоп-приказу.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий