Вопрос по индикатору Zigzag

 

Здравствуйте. Есть эксперт, работающий на зигзаге. Местами он странно себя ведет. Выяснилось, проблема в том, что иногда пропадает последний экстремум зигзага.

Для проверки написал небольшой индикатор. Он находит время открытия бара, на котором расположен последний экстремум зигзага и сравнивает его с тем же значением на предыдущем тике. Если новое время оказывается меньшим (экстремум пропал) - индикатор сигнализирует об этом алертом. Код:

#property strict
#property indicator_chart_window

input int zz_depth     = 20, // Slow zigzag depth
          zz_deviation = 5,  // Slow zigzag deviation
          zz_backstep  = 3;  // Slow zigzag backstep

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   static datetime previousTimeOfLastExtremum = 0;
   datetime        timeOfLastExtremum         = getTimeOfLastExtremum();
   
   if(timeOfLastExtremum == -1) // На всякий случай
      return(rates_total);
   
   if(timeOfLastExtremum >= previousTimeOfLastExtremum)
      previousTimeOfLastExtremum = timeOfLastExtremum;
   
   else Alert("Пропал экстремум");
   
   return(rates_total);
  }

datetime getTimeOfLastExtremum()
  {
   for(int i = 0; i < Bars; i++)
      if(iCustom(NULL, 0, "ZigZag", zz_depth, zz_deviation, zz_backstep, 0, i) != 0)
         return(Time[i]);
   
   Alert("Не удалось найти экстремум ZigZag с настройками ", zz_depth, " ", zz_deviation, " ", zz_backstep);
   
   return(-1);
  }

Результат:

 

Если кто захочет убедиться, индикатор нужно запускать в тестере стратегий. Настройки индикатора дефолтные. Параметры тестирования:

  

Подскажите, пожалуйста, это нормальная работа зигзага, так и задумано? Или, может быть, я где-то ошибся?

 
Vladislav Boyko:

Здравствуйте. Есть эксперт, работающий на зигзаге. Местами он странно себя ведет. Выяснилось, проблема в том, что иногда пропадает последний экстремум зигзага.

Для проверки написал небольшой индикатор. Он находит время открытия бара, на котором расположен последний экстремум зигзага и сравнивает его с тем же значением на предыдущем тике. Если новое время оказывается меньшим (экстремум пропал) - индикатор сигнализирует об этом алертом. Код:

Результат:

 

Если кто захочет убедиться, индикатор нужно запускать в тестере стратегий. Настройки индикатора дефолтные. Параметры тестирования:

  

Подскажите, пожалуйста, это нормальная работа зигзага, так и задумано? Или, может быть, я где-то ошибся?

Так ведь ZigZag - перерисовывающийся индикатор. Его последний экстремум не является стабильным, он может перескочит на другой бар. Иначе бы ZigZag был Граалем)))
 
Ihor Herasko:
Так ведь ZigZag - перерисовывающийся индикатор. Его последний экстремум не является стабильным, он может перескочит на другой бар. Иначе бы ZigZag был Граалем)))

Он перескакивает только вправо.

В основном он пропадает всего на 1 тик, а, затем появляется на том-же баре. То есть, даже, учитывая этот "баг", он перескакивает только вправо.

Я бы не назвал это перерисовкой, он просто пропадает на время. 

При чем, мне еще не удалось даже с помощью WindowScreenShot() уловить момент пропажи. А, фактически, он есть.

 
Vladislav Boyko:

Я бы не назвал это перерисовкой, он просто пропадает на время. 

Можете не называть, но сути это не меняет. :) Последний экстремум фиксируется тогда, когда цена уйдёт от него на величину, равную или превышающую размерность зигзага. До этого момента последний экстремум может пропасть, если цена развернётся.
 
Vladislav Boyko:

Здравствуйте. Есть эксперт, работающий на зигзаге. Местами он странно себя ведет. Выяснилось, проблема в том, что иногда пропадает последний экстремум зигзага.

Для проверки написал небольшой индикатор. Он находит время открытия бара, на котором расположен последний экстремум зигзага и сравнивает его с тем же значением на предыдущем тике. Если новое время оказывается меньшим (экстремум пропал) - индикатор сигнализирует об этом алертом. Код:

Результат:

 

Если кто захочет убедиться, индикатор нужно запускать в тестере стратегий. Настройки индикатора дефолтные. Параметры тестирования:

  

Подскажите, пожалуйста, это нормальная работа зигзага, так и задумано? Или, может быть, я где-то ошибся?

Это мне напомнило давнюю историю. Звонит клиент и возбужденным голосом говорит, что разработал крутую стратегию, надо срочно писать советника! Смотрю, стратегия на Зигзаге и фракталах )) Я говорю, - а ты в курсе, что они перерисовываются? Это на истории все прекрасно, а в реале нет.

Так он не поверил, заплатил денег, я ему набросал по быстрому и в местах фракталов и пиков ставил точки. Там этих точек было на ненужных местах... 

 
Alexey Volchanskiy:

Это мне напомнило давнюю историю. Звонит клиент и возбужденным голосом говорит, что разработал крутую стратегию, надо срочно писать советника! Смотрю, стратегия на Зигзаге и фракталах )) Я говорю, - а ты в курсе, что они перерисовываются? Это на истории все прекрасно, а в реале нет.

Так он не поверил, заплатил денег, я ему набросал по быстрому и в местах фракталов и пиков ставил точки. Там этих точек было на ненужных местах... 

Я не отрицал того что он рисует. Но я не думал что описанная мной ситуация относится к перерисовке. Как по мне, это больше похоже на баг, ведь точка не перемещается а именно пропадает и появляется на том-же баре. Но если все утверждают что это тоже перерисовка - ок. Именно это я и хотел узнать.

Всем спасибо.

 

стандартный ZigZag в составе терминала, кривой, он может последний луч отменить или нарисовать две

вершины верхние или нижние подряд, не зря есть большое количество клонов у которых отсутствуют эти проблемы

 
Alexander Bereznyak:

стандартный ZigZag в составе терминала, кривой, он может последний луч отменить или нарисовать две

вершины верхние иди нижние подряд, не зря есть большое количество клонов у которых отсутствуют эти проблемы

+1
 
Sergei Vladimirov:
Можете не называть, но сути это не меняет. :) Последний экстремум фиксируется тогда, когда цена уйдёт от него на величину, равную или превышающую размерность зигзага. До этого момента последний экстремум может пропасть, если цена развернётся.

Развернется тогда, когда это предусмотрено алгоритмом, а не когда уйдет на величину равную или превышающую размерность зигзага.

А вот алгоритмов разных много. Например, можно вручную нарисовать

И никакие усилия не заставят его перерисоваться....