Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Индикаторы

Профессиональный ZigZag - индикатор для MetaTrader 5

Просмотров:
14815
Рейтинг:
(48)
Опубликован:
2011.01.14 13:58
Обновлен:
2016.11.22 07:33
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Внимание! Данный индикатор создан на основе одной из версий кода Просто ZZ (зиг-заг) и публикуется здесь с разрешения автора PPC (я принимал непосредственное участие в тестировании и указание на ошибки в алгоритме). Данный код является переписанным один к одному версии индикатора под платформу MetaTrader 4.

Внимание! Библиотеку "AlexSTAL_OutsideBar.mqh" необходимо поместить в папку терминала ..\MQL5\Include\

Что такое ЗигЗаг?

С моей точки зрения ЗигЗаг - это своего рода компрессия ценового графика. Построение ЗигЗага может основываться как на одной цене бара (к примеру, только Close), так и на High/Low (наиболее распространенный тип построения).

В процессе изучения и работы со стандартным индикатором ZigZag выявились некоторые ошибки и недочеты типового решения от MetaQuotes. Самая большая проблема заключается в том, что типовой ZigZag не обрабатывает ситуацию с внешним баром (outside bar).

В 2007 году Rosh опубликовал версию индикатора Zigzag2 R, которая должна была использовать алгоритм обработки внешнего бара (с использованием стиля рисования DRAW_ZIGZAG вместо DRAW_SECTION, что позволяет располагать экстремумы ZigZag на одном баре), но по неизвестной даже ему причине версия на сайте не содержит нужного кода.

Для продолжения разговора я бы хотел сформулировать свое определение правильности построения типового ZigZag:

  • Экстремумы High и Low должны строго чередоваться;
  • Экстремум High должен иметь максимальное (или равное) значение среди всех баров, расположенных справа, до следующего (противоположного) экстремума Low;
  • Экстремум Low должен иметь минимальное (или равное) значение среди всех баров, расположенных справа, до следующего (противоположного) экстремума High.

Разберем очень наглядный пример (EURUSD H1 8-13 декабря 2006 года), где одновременно встречаются две ситуации с внешним баром, которые типовыми индикаторами правильно не обрабатываются.

Рисунок 1. Типовой ZigZag с параметрами [12;5;3] и [12;0;0]

Рисунок 1. Типовой ZigZag с параметрами [12;5;3] и [12;0;0]


Рисунок 2. Zigzag2 R с параметрами [12;5;3]

Рисунок 2. Zigzag2 R с параметрами [12;5;3]



Рисунок 3. Zigzag2 R с параметрами [12;0;0]

Рисунок 3. Zigzag2 R с параметрами [12;0;0]

На первый взгляд казалось бы, что на Рисунке 3 все верно, но:

  1. Он с подобранными параметрами, а правильность построения должна быть сохранена при любых параметрах.
  2. Внешний бар слева обрабатывается не правильно, так как имеет значение порядок формирования High/Low бара:


и соответственно порядок следования отрезков ZigZag.

В процессе исследования были протестированы следующие ZigZag (не только на опубликованном периоде): ZigZag MT3, ZigZag, Zigzag R, Zigzag2 R, ZigZag_NK, ZigZag_ZUP89_nen, ZigZag_new_nen4, CZigZag, Swing_ZZ_1, DT_ZZ_nen, ZigZag_Talex, Reverse_ZZ, Points_ZZ_1, i_MF_Fractal_ZZ_3in1, ang_Amp_ZZ, ZigzagFr_v1, NonLagZigZag_v2, ZZ_FF_v3, ZigZag Ensign, ZigZag tauber, SQZZ Товаровед, ZZ_2L_nen wellx, Channel ZZ, Azzx_larryzz_3_0, RPoint, RPoint-m v2, ZigZagTF. Ни один из них с поставленной задачей не справился в полном объеме.


Рисунки данного индикатора на исследуемом участке:

Рисунок 4. Параметры [12;0]

Рисунок 4. Параметры [12;0]


Рисунок 5. Параметры [23;0]

Рисунок 5. Параметры [23;0]


Характеристики и особенности опубликованного ZigZag:

  • Однопроходный;
  • Пересчитывается и перерисовывается только последний отрезок (отменится отрезок не может, за исключением при докачке истории);
  • Присутствует механизм оптимизации расчетов внутри бара (не пересчитывается на тике, если цена изменялась внутри нулевого бара или же ее изменения не были больше минимального порога, заданного в переменной MinMotion);
  • Два алгоритма получения порядка формирования High/Low бара: по типу бара (быстрый, но не достоверный) и по данным с меньшего периода (требуется история: самостоятельный контроль за ее наличием и адекватностью или изменение библиотеки OutsideBar).

Версия ProExtra не публикуется, так как вопрос корректности котировок в MetaTrader 5 еще не изучен.


Дополнительные примеры некорректной работы других ZigZag

Рисунок 6. EURUSD H1 29 ноября-7 декабря 2010 года. Красная линия ZigZag с параметрами [7;0;0]. Синяя линия Zigzag2 R с параметрами [7;0;0].

Рисунок 6. EURUSD H1 29 ноября-7 декабря 2010 года. Красная линия ZigZag с параметрами [7;0;0]. Синяя линия Zigzag2 R с параметрами [7;0;0]


Рисунок 7. EURUSD H1 29 ноября-7 декабря 2010 года. Правильное построение

Рисунок 7. EURUSD H1, 29 ноября - 7 декабря 2010 года. Правильное построение


Заключение

К сожалению, данная версия не лишена всех недостатков. Но я работаю над этим.

И так как данный индикатор работает все по тому же канальному принципу iHighest/iLowest (как и типовой ZigZag), то иногда случаются пропуски вершин.

Убедительная просьба сообщать обо всех замеченных багах и фичах данного индикатора.
Мастер MQL5 - Торговые сигналы по пересечению основной и сигнальной линий индикатора MACD Мастер MQL5 - Торговые сигналы по пересечению основной и сигнальной линий индикатора MACD

Торговые сигналы по пересечению основной и сигнальной линий индикатора MACD "Signals based on crossover of main and signal MACD lines" (класс CSignalMACD из Стандартной библиотеки).

Мастер MQL5 - Торговые сигналы по пересечению двух EMA с фильтрацией сделок по времени Мастер MQL5 - Торговые сигналы по пересечению двух EMA с фильтрацией сделок по времени

Торговые сигналы по пересечению двух экспоненциальных скользящих средних с фильтрацией сделок по временным параметрам "Signals based on crossover of two EMA with intraday time filter".

Мастер MQL5 - Торговые сигналы по пересечению линий индикатора Alligator Мастер MQL5 - Торговые сигналы по пересечению линий индикатора Alligator

Торговые сигналы по пересечению линий индикатора Alligator.

sChartsSynchroScroll_v2 sChartsSynchroScroll_v2

Новая версия скрипта sChartsSynchroScroll.