Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Профессиональный ZigZag - индикатор для MetaTrader 5
- Просмотров:
- 14112
- Рейтинг:
- Опубликован:
- 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]
Рисунок 2. Zigzag2 R с параметрами [12;5;3]
Рисунок 3. Zigzag2 R с параметрами [12;0;0]
На первый взгляд казалось бы, что на Рисунке 3 все верно, но:
- Он с подобранными параметрами, а правильность построения должна быть сохранена при любых параметрах.
- Внешний бар слева обрабатывается не правильно, так как имеет значение порядок формирования 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]
Рисунок 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]
Рисунок 7. EURUSD H1, 29 ноября - 7 декабря 2010 года. Правильное построение
Заключение
К сожалению, данная версия не лишена всех недостатков. Но я работаю над этим.
И так как данный индикатор работает все по тому же канальному принципу iHighest/iLowest (как и типовой ZigZag), то иногда случаются пропуски вершин.
Убедительная просьба сообщать обо всех замеченных багах и фичах данного индикатора.Торговые сигналы по пересечению основной и сигнальной линий индикатора MACD "Signals based on crossover of main and signal MACD lines" (класс CSignalMACD из Стандартной библиотеки).
Мастер MQL5 - Торговые сигналы по пересечению двух EMA с фильтрацией сделок по времениТорговые сигналы по пересечению двух экспоненциальных скользящих средних с фильтрацией сделок по временным параметрам "Signals based on crossover of two EMA with intraday time filter".
Торговые сигналы по пересечению линий индикатора Alligator.
sChartsSynchroScroll_v2Новая версия скрипта sChartsSynchroScroll.