ЗигЗаг (ZigZag) problems - страница 3

 
Yuri A:

Дельный совет, спасибо.  А если использовать тогда не последнее значение iCustom(sy,tf,"ZigZag",12,5,3,0,0)   а предпоследнее iCustom(sy,tf,"ZigZag",12,5,3,0,1)  ???
В этом случае это меняет ситуацию или нет??

С какого бара брать - без разницы, все будет только на бар раньше или на бар позже. Важно проверить наличие значения. Ищите у себя ошибки. Буфер, повторю - нулевой (0 - вот такая цифиря - сплюснутый кружочег с дырочкой по середине).

 
Dmitry Fedoseev:

С какого бара брать - без разницы, все будет только на бар раньше или на бар позже. Важно проверить наличие значения. Ищите у себя ошибки. Буфер, повторю - нулевой (0 - вот такая цифиря - сплюснутый кружочег с дырочкой по середине).

Коекакой позитив есть, но небольшой.

Добавил условие Close ниже 0, 1 и 2 второго бара. Количество сделок упало до 93. Но это не то.
По результатах -- много позиций идут одна за другой в одно и тоже время и по графику ну никак не совпадает с ЗигЗагом

Close[0]<iCustom(Symbol(),PERIOD_H1,"ZigZag",7,5,3,0,2) &&iCustom(Symbol(),PERIOD_H1,"ZigZag",7,5,3,0,1)>0.1 &&iCustom(Symbol(),PERIOD_H1,"ZigZag",7,5,3,0,1)!=EMPTY_VALUE &&Close[0]<iCustom(Symbol(),PERIOD_H1,"ZigZag",7,5,3,0,1) &&Close[0]<iCustom(Symbol(),PERIOD_H1,"ZigZag",7,5,3,0,0)


Какие еще идеи??? 
И почему сделки ну никак не совпадают с зигзагом. Когда должно было закрыть позицию, не закрывает, когда не надо - то 90 сделок

 
Фактически нужно значение бара (минимума) на котором  происходит перелом кривой, (нижняяточка) , а по факту выводит непонятно что.
 
Yuri A:
Фактически нужно значение бара (минимума) на котором  происходит перелом кривой, (нижняяточка) , а по факту выводит непонятно что.

Уже давно всё сделали-бы, если-бы читали ответы

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

ЗигЗаг (ZigZag) problems

Vitaly Muzichenko, 2019.02.09 23:57

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает номер бара экстремума ЗигЗага по его номеру.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=0; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(-1);
}

 
Vitaly Muzichenko:

Уже давно всё сделали-бы, если-бы читали ответы


В этом случае я так понимаю выводится номер бара, а мне нужно именно значенние на этом баре а не сам бар. 
И потом соответственно условие MA < (значение минимума этого бара)

 
Yuri A:

В этом случае я так понимаю выводится номер бара, а мне нужно именно значенние на этом баре а не сам бар. 
И потом соответственно условие MA < (значение минимума этого бара)

А что мешает получить цену, если известен индекс бара? Вот это полученное значение и сравнивается с МА. Только, опять же, с МА на баре, индекс которого известен. Никак не на нулевом баре.

 
Yuri A:

В этом случае я так понимаю выводится номер бара, а мне нужно именно значенние на этом баре а не сам бар. 
И потом соответственно условие MA < (значение минимума этого бара)

А что нам стоит дом построить

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=0; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
 
Yuri A:

В этом случае я так понимаю выводится номер бара, а мне нужно именно значенние на этом баре а не сам бар. 
И потом соответственно условие MA < (значение минимума этого бара)

// здесь цены на нужном баре
priceH = High[номер бара];
priceL = Low[номер бара];