Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Профессиональный ZigZag - индикатор для MetaTrader 4
- Просмотров:
- 29167
- Рейтинг:
- Опубликован:
- 2011.01.11 15:03
- Обновлен:
- 2017.09.06 09:24
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Внимание! 12 января 2011 года добавлена защита от сервисной процедуры по отрезанию лишних баров на графике. Так же подправлена библиотека OutsideBar. Скачайте всё по новой.
Внимание! Данный индикатор создан на основе одной из версий кода Просто ZZ (зиг-заг) и публикуется здесь с разрешения автора PPC (я принимал непосредственное участие в тестировании и указание на ошибки в алгоритме)
Внимание! Для работы необходимо скачать библиотеку OutsideBar и поместить её в папку терминала ..\experts\include\
Что такое ЗигЗаг?
С моей точки зрения ЗигЗаг - это своего рода компрессия ценового графика. Построение ЗигЗага может основываться как на одной цене бара (к примеру только Close), так и на High/Low (наиболее распространённый тип построения).
В процессе изучения и работы со стандартным индикатором ZigZag выявились некоторые ошибки и недочеты типового решения от MetaQuotes. Самая большая проблема заключается в том, что типовой ZigZag не обрабатывает ситуацию с внешним баром (outside bar). В 2007 году была опубликована версия индикатора 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)
- расширенная защита от докачки истории и обрывов связи с сервером
Отличие версии ProfExtra от Prof версии:
- дополнительная обработка ситуации с изменением котировок "задним числом" в терминале, без реакции на это функции IndicatorCounted() (ошибка или не доработка терминала MT4)
ProfExtra уменьшает в разы вероятность появления распространённой для ZigZag проблемы (особенно актуальной на периоде М1) образование горбов (два или
более одинаковых по направлению экстремумов - High->High или
Low->Low) или несовпадения экстремумов с High или Low графика.
Версия ProfExtra использует на два индикаторных буфера больше (соответственно оперативной памяти нужно больше) и на каждом тике выполняет дополнительную проверку на расхождение котировок.
Не используйте версию ProfExtra при тестировании советников, так как это не имеет никакого смысла (проблема проявляется только на on-line графиках), а только появляется дополнительная нагрузка на расчеты и оперативную память.
Дополнительные примеры не корректной работы других ZigZag
Рисунок 6. EURUSD H1 29 ноября-7 декабря 2010 года. Красная линия ZigZag с параметрами [7;0;0]. Синяя линия Zigzag2 R с параметрами [7;0;0].
Рисунок 7. EURUSD H1 29 ноября-7 декабря 2010 года. Правильное построение.
Заключение.
К сожалению данная версия не лишена всех недостатков. Но я работаю над этим.
Убедительная просьба сообщать обо всех замеченных багах и фичах данного индикатора.
Советник по системе "Трёх экранов" Элдера
OutsideBarНабор функций для получения последовательности формирования High/Low бара.
Индикатор показывает возможные цели движения цены.
ZigZag ОрловаЗигЗаг с простым, понятным и естественным принципом работы. По ценам закрытия. Без перерисовки.