Версия 41.
Данная версия, возможно, не полностью отлажена. Просьба обо всех сбоях при применении новых вариантов ZigZag сообщать с подробныи описанием, как возникла ошибка.
Что нового.
1) Устранена ошибка, когда при прокручивании графика назад ZigZag выводил "мусор".
2)
ExtIndicator=5 - вариация на тему свингов Ганна.
minBars задает тенденцию
minBars=0 малая тенденция (однобаровая)
minBars=1 промежуточная тенденция (двухбаровая)
minBars=2 главная (основная) тенденция (трехбаровая)
minBars>2 тенденции более высокого порядка.
Отличия от свингов Ганна в данной реализации описывал на предыдущих страницах этой ветки.
3)
ExtIndicator=6 - ZigZag строится на основе данных DT-ZigZag.
Параметры для этого варианта ZigZag задаются также, как и для ExtIndicator=0.
DT-Zigzag встроен в ZUP. Но в данной версии для работы DT-ZigZag необходим внешний стандартный ZigZag. Прикладываю в комплекте с данной версией ZigZag, с которым DT-ZigZag может работать.
ZUP и ZigZag надо скопировать в папку с пользовательскими индикаторами.
GrossPeriod - число минут того таймфрейма, по показаниям которого строится DT-ZigZag.
Желтые полоски от DT-ZigZag можно убрать, выбрав цвет None на вкладке Цвета в окне изменения свойств пользовательских индикаторов.
DT-ZigZag работает в реальном времени. И на каждом тике производятся вычисления. Поэтому возможно подвисание компьютера.
На предыдущей странице мы с Putnik-ом обсуждали сбои, которые возникают при работе DT-ZigZag.
Ниже на графике Показаны шесть сбойных участков. Параметры ZigZag для данного графика 3-1-1
Нажмите для просмотра прикрепленного файлаАлгоритм прорисовки ZigZag сделан такой, что чередуются максимумы и минимумы. Если, например, минимум не будет найден, то следующме максимумы пропускаются до тех пор пока не будет найден минимум.
В районе точки 0 не был найден минимум. Максимум в точке 1 из-за этого был пропущен.
В точке 00 и 2 такая же проблема.
В точках 0 и 00 из-за ошибки в алгоритме ZigZag минимумы удалены. Ниже привожу свое сообщение с сайта Метаквотов:
]]>]]>http://articles.mql4.com/ru/139]]>]]>================К сожалению, стандартный - встроенный в метатрейдер ZigZag - имеет следующий недостаток.
При расчете используются два буфера. Один для найденных нижних перегибов (минимумов), другой для верхних перегибов (максимумов).
Бывают ситуации, когда на одном баре находится и минимум и максимум. В частности, на внешнем баре.
Почему-то автор - тот, кто первый написал этот индикатор - решил, что для построения ZigZag важны именно максимумы. И при нахождении минимума и максимума на одном баре выбирается только максимум.
Вот кусочек кода, где это происходит:
//----+ начало третьего цикла
for(shift=limit; shift>=0; shift--)
{
res=TempBuffer[shift];
if(res!=0.0) ZigZagBuffer[shift]=res;
}
//----+ конец третьего цикла
Горбы как раз и возникают, когда был найден минимум и максимум на одном баре.
Такое вот волюнтаристское решение. Не буду здесь рассуждать, как это проявляется в реальной рыночной ситуации. Но, считаю, что это ошибочное решение.
================В точках 0 и 00 мы видим проявление ошибки кода стандартного ZigZag.
В точке 3 и точке 5 максимум и минимум бара текущего таймфрейма (m30) не равны максимуму и минимуму бара таймфрейма (H4 GrossPeriod=240), с которого берутся данные для построения DT-ZaigZag, Экстремумы для рабочего периода в точках 3 и 5 найдены не были, соответственно, следующие точки 4 и 6 были пропущены.
Причины, по которым в точках 3 и 5 экстремумы баров старшего таймфрейма не равны экстремумам рабочего таймфрейма, необходимо выяснять. Может помочь удаление истории по данным таймфреймам из папки
history метатрейдера и загрузка истории по новой. Но в некоторых случаях это может не помочь. В этих точках сбой в котировках. Это свойство в данной версии можно использовать в качестве тестера по качеству котировок. Один раз удаление истории мне помогло.
===================
В точке 3, как оказалось, DT-ZigZag показал значение 2.3276. А котировки и на m30, и на H4 равны 2.3275. Но бар - близкий предыдущий максимум перед точкой 3 имеет котировку 2.3276. Выходит, что DT-ZigZag в точке 3 построил экстремум со сдвигом на несколько баров на m30. Интересно...
Надо подробно с алгоритмом DT-ZigZag разбираться.
Это построено с помощью DT-ZigZag, втроенного в ZUP. Сейчас посмотрю, как автономный - оригинальный - работает в данной точке.
Точно также строит. Опа, приехали... ZUP помог найти ошибку в DT-ZigZag-е.
В DT-ZigZag ошибка.
И точно такая же история в точке 5.
Надо разбираться с кодом DT-ZigZag!!!!!!!!!!!!!.
Как говорится: не было печали....
Найденная ошибка, может быть, окажет отрезвляющее действие на Юзеров. ВСЕ НАДО САМОСТОЯТЕЛЬНО ПРОВЕРЯТЬ.
Имеются планы по развитию индикатора. Но такие вот ошибки, которые надо устранять, сильно тормозят.
Выход пока видится один - встраивать DT-ZigZag полностья в код ZUP - то есть не использовать внешний ZigZag.
===================
====================
Еще раз повторю. Возможно, данная версия не полностью отлажена. Не справляюсь. Решил выложить для коллективного тестирования.