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

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

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

Внимание! Данный индикатор создан на основе одной из версий кода Просто 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.