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

 
Каким кодом прописать автоматическое открытие ордера после закрытия предыдущего по ТР?
 
mutantmoscow:
Каким кодом прописать автоматическое открытие ордера после закрытия предыдущего по ТР?
if(StringFind(OrderComment(),"tp")>=0)
{
 тут код открытия ордера
}
 
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);
}
 
Vladislav Andruschenko:

 

 

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

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

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

 

 

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

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

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