Принцип работы ZigZag

 

Коллеги, привет, все пытаюсь разобраться в том, как работает зиг заг, но никак не догоняю, даже просматривая код.

input int InpDepth=12;     // Depth
input int InpDeviation=5;  // Deviation
input int InpBackstep=3;   // Backstep

Что за параметры и как они друг с другом взаимодействую? Если не сложно, можете описать именно алгоритм расчетов и отрисовки?

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

 
Nikita Chernyshov:

Коллеги, привет, все пытаюсь разобраться в том, как работает зиг заг, но никак не догоняю, даже просматривая код.

Что за параметры и как они друг с другом взаимодействую? Если не сложно, можете описать именно алгоритм расчетов и отрисовки?

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

да там все просто )

рисовать новый экстремум, если от предыдущего отошли на заданное количество баров и новый экстремум выше(если предыдущий нижний)/ниже(если предыдущий верхний) предыдущего на заданное количество пипсов.

 
Alexandr Bryzgalov:

да там все просто )

рисовать новый экстремум, если от предыдущего отошли на заданное количество баров и новый экстремум выше(если предыдущий нижний)/ниже(если предыдущий верхний) предыдущего на заданное количество пипсов.

да, именно на таком уровне я понимаю работу: учитываем количество свечей и расстоение.

Но:

1. Чем отличается Depth от backStep
2. Пипсов или все таки процентов от последней "волны"?

 
Nikita Chernyshov:

да, именно на таком уровне я понимаю работу: учитываем количество свечей и расстоение.

Но:

1. Чем отличается Depth от backStep

BackStep - вообще лишний параметр. Он как раз все и запутывает, именно из-за него ZigZag частенько рисует две вершины или два дна подряд (заметно на мелких ТФ). Исходя из кода, можно сказать, что он отвечает за то, насколько хорошо ZigZag перерисовывается ))



2. Пипсов или все таки процентов от последней "волны"?

Про волны - это вообще не в ту степь. Речь только про то, насколько пунктов от последнего экстремума ушла цена:

if(low[i]-extremum>InpDeviation*Point)
  extremum=0.0;

и 

         if(extremum-high[i]>InpDeviation*Point)
            extremum=0.0;
То есть пора или нет отображать новый экстремум.
 
Ihor Herasko:
BackStep - вообще лишний параметр. Он как раз все и запутывает, именно из-за него ZigZag частенько рисует две вершины или два дна подряд (заметно на мелких ТФ). Исходя из кода, можно сказать, что он отвечает за то, насколько хорошо ZigZag перерисовывается ))


Про волны - это вообще не в ту степь. Речь только про то, насколько пунктов от последнего экстремума ушла цена:

и 

То есть пора или нет отображать новый экстремум.

Да я "волны" и взял в кавычки)

Спасибо, чуть понятнее. Еще посижу, поразбираюсь.

Но все-таки, что за вещь  BackStep?

 
Nikita Chernyshov:

Да я "волны" и взял в кавычки)

Спасибо, чуть понятнее. Еще посижу, поразбираюсь.

Но все-таки, что за вещь  BackStep?

Лучше использовать зиг-заг, имеющий один параметр - порог (отклонение в пипсах от предыдущего экстремума), при котором образуется новый луч зиг-зага. Всё просто и понятно.

 
Nikita Chernyshov:

Да я "волны" и взял в кавычки)

Спасибо, чуть понятнее. Еще посижу, поразбираюсь.

Но все-таки, что за вещь  BackStep?

Если следовать четко коду, то это параметр, который указывает, на скольких барах назад нужно убрать экстремумы ЗЗ в момент выполнения условий для формирования очередного экстремума. Какой логический смысл закладывался в этот параметр, наверное, знает только его разработчик (кто-то из команды MQ, но вполне может быть, что он уже не работает там; все-таки более 15 лет прошло).

 
Ihor Herasko:

Если следовать четко коду, то это параметр, который указывает, на скольких барах назад нужно убрать экстремумы ЗЗ в момент выполнения условий для формирования очередного экстремума. Какой логический смысл закладывался в этот параметр, наверное, знает только его разработчик (кто-то из команды MQ, но вполне может быть, что он уже не работает там; все-таки более 15 лет прошло).

Не учитывать экстремумы. Вернее на сколько баров назад искать экстремум. Как не менее и не более баров от текущего для поиска / учёта ближайшего экстремума. Для начала расчета видимо сделан.
 
Valeriy Yastremskiy:
Не учитывать экстремумы. Вернее на сколько баров назад искать экстремум. Как не менее и не более баров от текущего для поиска / учёта ближайшего экстремума. Для начала расчета видимо сделан.

Но, к сожалению, он влияет и на весь оставшийся расчет. Из-за него и баги.

Таким образом, лучше брать более поздние разработки из Code Base. Я там видел весьма достойные и быстрые ЗЗ.
 
Ihor Herasko:

Но, к сожалению, он влияет и на весь оставшийся расчет. Из-за него и баги.

Таким образом, лучше брать более поздние разработки из Code Base. Я там видел весьма достойные и быстрые ЗЗ.
Да, долгий побарный тренд и расчет ведётся как заново и последний экстремум не учтется. И может совпасть с новым. Его просто нужно делать побольше) или использовать другой алгоритм.
Причина обращения: