Подскажите как написать код (zig-zag)

 
Расскажите плз популярно, и желательно попроще, как мне получит информацию о последней сделке. Стоит SL=30 и TP=50, нужно в зависимости от того закрылась сделка по SL или TP изменить, допустим, лот.
С уважением Сергей.
 

Возвращает истину, если последняя сделка закрылась стопом.

//+----------------------------------------------------------------------------+
//|  Возвращает флаг закрытия последней позиции по стопу.                      |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    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=="") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==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(sy, "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    osl=NormalizeDouble(OrderStopLoss(), dg);
    if (ocp==osl) return(True);
  }
  return(False);
}

Возвращает истину, если последняя сделка закрылась тейком.

//+----------------------------------------------------------------------------+
//|  Возвращает флаг закрытия последней позиции по тейку.                      |
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    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=="") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==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(sy, "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
}
 
Спасибо огромное
 
Здравствуйте.
Подскажите, как сделать так чтобы советник ждал, когда на индикаторе zig-zag образуется излом, то есть, допустим, максимум или минимум достигнуты и график пошел в другом направление, но излом не появился, как сделать чтобы после образования той висячей линии сигнализирующей что излом произошел, сразу например, сделать торговую операцию.
С уважение Сергей.
 
Sergey_n:
Здравствуйте.
Подскажите, как сделать так чтобы советник ждал, когда на индикаторе zig-zag образуется излом, то есть, допустим, максимум или минимум достигнуты и график пошел в другом направление, но излом не появился, как сделать чтобы после образования той висячей линии сигнализирующей что излом произошел, сразу например, сделать торговую операцию.
С уважение Сергей.


Попробуйте почитать тут
http://onix-trade.net/forum/index.php?showforum=54

Прямого ответа нет там, но мысли начнут у вас организовываться
 
wellx:
Sergey_n:
Здравствуйте.
Подскажите, как сделать так чтобы советник ждал, когда на индикаторе zig-zag образуется излом, то есть, допустим, максимум или минимум достигнуты и график пошел в другом направление, но излом не появился, как сделать чтобы после образования той висячей линии сигнализирующей что излом произошел, сразу например, сделать торговую операцию.
С уважение Сергей.




Попробуйте почитать тут
http://onix-trade.net/forum/index.php?showforum=54

Прямого ответа нет там, но мысли начнут у вас организовываться

спасибо за ссылку, сейчас пороюсь
 
Sergey_n:
Здравствуйте.
Подскажите, как сделать так чтобы советник ждал, когда на индикаторе zig-zag образуется излом, то есть, допустим, максимум или минимум достигнуты и график пошел в другом направление, но излом не появился, как сделать чтобы после образования той висячей линии сигнализирующей что излом произошел, сразу например, сделать торговую операцию.
С уважение Сергей.



Посмотрите ссылку - ниже.

Пожалуй, это - как раз то, что вы ищете! УЖЕ готовое решение! Описание тактики, - по ссылке выше в описании индикатора ZUP

http://www.tradersforum.net.ru/forum/index.php?showtopic=356&=0

 
leonid553:
Sergey_n:
Здравствуйте.
Подскажите, как сделать так чтобы советник ждал, когда на индикаторе zig-zag образуется излом, то есть, допустим, максимум или минимум достигнуты и график пошел в другом направление, но излом не появился, как сделать чтобы после образования той висячей линии сигнализирующей что излом произошел, сразу например, сделать торговую операцию.
С уважение Сергей.




Посмотрите ссылку - ниже.


Пожалуй, это - как раз то, что вы ищете! УЖЕ готовое решение! Описание тактики, - по ссылке выше в описании индикатора ZUP


http://www.tradersforum.net.ru/forum/index.php?showtopic=356&=0


Спасибо, это как раз то что я пытался сделать, интересная идея, я до неё сам додумался поэтому решил развивать, мне кажется, она того стоит
С уважением Сергей
 
Подскажите вот эта строчка

if (iCustom(NULL, 0, "ZUP_v49mod", minPercent, minSize, minBars, 0, 0)>0)

показывает, что если >0 то что? То есть, какое значение дает iCustom(NULL, 0, "ZUP_v49mod", minPercent, minSize, minBars, 0, 0) и что этим характеризует? Я как понял это проверка последнего бара, то есть если >0 то получен максимум? и какое он значение принимает, может быть в пунктах от максимума?

И за одно расскажите что делает этот код.
switch (filter)
{
case 1: ray_length=NormalizeDouble((peak2*minPercent/100), 4); break;
case 2: ray_length=minSize*Point; break;
}


С уважением Сергей
 

Посмотрел. Увы - не смогу ответить!

Поставьте Ваш вопрос - прямо там, - в ветке. И автор советника оперативно даст ответ!

 
leonid553:

Посмотрел. Увы - не смогу ответить!


Поставьте Ваш вопрос - прямо там, - в ветке. И автор советника  оперативно даст ответ!



А что такое Bar, это один пункт или тот бар который формируется на графике (bar=1 свечка)?
Причина обращения: