Алгоритм(ы) ZZ

Тема в разделе "3. - зиг-заги", создана пользователем wellx, 6 дек 2006.

  1. wellx

    wellx Активный пользователь

    Всех с наступившим Новым Годом!
    Пока идет раскачка после праздника несколько теоретических вопросиков:
    1. Так как решили что важно иметь возможность отрисовывать ЗЗ на одном баре, то параметр backstep теряет свою значимость.
    Но есть вопросы:
    - как отрисовывать ЗЗ , если каждый последующий бар становится внешним по отношению к предыдущему? Из дискуссии на пауке по свингам выявились следующие решения : рисовать пилу, рисовать исходя из порядка появления вершин ( но это при наличии истории меньших периодов, перемещать экстремумы. Полагаться на историю трудно,да и в реальности можно упереться в необходимость наличия тиковой истории, что требовать не реально. Остается искать алгоритм отрисовки, но он неизбежно придет в противоречие с работой на реале (сиречь тиковая история нулевого бара).
    2. Пора определить алгоритм определения первой вершины на истории. Собственно тут я жду предложений от участников дискуссии. вариантов может быть много, вопрос какой выбрать за основной?

    3. Такая особенность ЗЗ как "проглатывание последних 2х экстремумов можно оформить как фичу (вкл/выкл) по желанию пользователя, лишь бы он понимал зачем он это делает. По здравому размышлению пришел к выводу , что для работы МТС это, в принципе, не мешает. Надо только правильно прописать входы выходы и стопы.

    Жду мысли на предложенные темы ...
     
  2. nen

    nen Профи форума

    В книге Хьержика описывается алгоритм построения свингов Ганна. Там описывается, как работать с внешним баром. Но это действительно часто может приводить к противоречию с реальным положением вещей. То есть в реальном времени отрисуется одно. А вторичная прорисовка через некоторое время по истории может прорисовать по-другому. Теоретически можно прорисовку внешнего бара в реальном делать как будто на истории. Тогда реал от истории не будет отличаться.

    Здесь есть тонкий момент. Имеет ли смысл эта "тонкая" обработка внешнего бара в реальном времени? То есть имеет ли смысл порядок движения луча зигзага. Сначала Хай, потом Лоу или сначала Лоу, а потом Хай.

    Вот если найти правильный ответ на этот вопрос, тогда и с внешним баром можно более точно определиться.
     
  3. wellx

    wellx Активный пользователь

    Весь вопрос : насколько ЗЗ должен повторять логику свингов Ганна? Тут уже начинается схоластика насет того что же есть ЗЗ за зверь такой? Да, еще есть требование отмечать ВСЕ значимые экстремумы, но это противоречит свингам Ганна. может вот это и есть их коренное отличие друг от друга?
     
  4. nen

    nen Профи форума

    Тогда можно выводить зигзаг с помощью двух буферов, как это сделал Николай Косицин в своей последней версии. И проблем не будет с внешним баром.
     
  5. wellx

    wellx Активный пользователь

    Это какой индюк? По имени , а то по автору не помню, а искать лень..
     
  6. nen

    nen Профи форума

    Вот этот
     

    Вложения:

    • ZigZag_NK.mq4
      Размер файла:
      8,9 КБ
      Просмотров:
      370
  7. wellx

    wellx Активный пользователь

    Спасибо, поизучаем... а откуда он появился этот индюк? И где он используется в ZUPe?
     
  8. nen

    nen Профи форума

    Этот зигзаг в ZUP не используется. Николай его на сайте MQ4 в разделе статей выложил. Туда можно попасть также через метаедитор.
    Это хороший алгоритм вывода зигзага. К сожалению, он появился уже когда ZUP был в основном создан. И сейчас перевести на такой алгоритм вывода зигзагов очень не просто. Но на настоящий момент это не актуально. Сейчас надо нарабатывать опыт по работе с ZUP. И уже опыт может подсказать, что нужно сделать далее.
     
  9. wellx

    wellx Активный пользователь

    Может уже пора начать переделку ZUP в сторону большей модульности? Уменьшить его , разнести по функциям и библиотекам, например ЗЗ+Фибо, ЗЗ+паттерны Гартли, ЗЗ+вилы ит.д.
    Уже сейчас код занимает страниц 70 печатного текста, код становится все тяжелее и тяжелее.
    Это ИМХО конечно.
     
  10. nen

    nen Профи форума

    Склоняюсь к эволюционному развитию.
    Если смогу, буду переделывать. Вопрос не простой.
    Идеи есть. Идей много. Есть просто красивые идеи. Сам, что смогу, сделаю. Сторонних разработчиков пока не вижу. К кому обращался - не увидел их заинтересованности. А сейчас разработка в таком состоянии, что сторонние разработчики... смогут ли они вписаться, чтобы швов не было заметно?
     
  11. nen

    nen Профи форума

    На сайте <a href="http://www.metaquotes.ru/forum/8045/" target="_blank"><a href="http://www.metaquotes.ru/forum/8045/" target="_blank"><a href="http://www.metaquotes.ru/forum/8045/" target="_blank"><a href="http://www.metaquotes.ru/forum/8045/" target="_blank"><a href="http://www.metaquotes.ru/forum/8045/" target="_blank"><a href="http://www.metaquotes.ru/forum/8045/" target="_blank"><a href="http://www.metaquotes.ru/forum/8045/" target="_blank"><a href="http://www.metaquotes.ru/forum/8045/" target="_blank"><a href="http://www.metaquotes.ru/forum/8045/" target="_blank">http://www.metaquotes.ru/forum/8045/</a></a></a></a></a></a></a></a></a>
    возник спор с Rosh'ем из-за зигзага.

    Побыстрому набросал код зигзага с исправлениями всех ошибок.
    Выкладываю этот зигзаг сначала здесь. Потом помещу на вышеуказанный сайт.
     

    Вложения:

  12. wellx

    wellx Активный пользователь

    Тоже ответил, но реально стоит продвинуть код от Косицина. Достаточно грамотно.
    И переименуй свой вариант например в ZZ_NK_nen1.
     
  13. nen

    nen Профи форума

    У Косицына надо убрать ошибку прорисовки переломов в воздухе.
    И второе. Сейчас очень много индикаторов, использующие сигналы от зигзага, в основе которых лежит зигзаг. Все эти индикаторы берут сигналы из однобуферного зигзага. А у Косицына двухбуферный зигзаг. Это очень серьезный момент. Его надо учитывать.
     
  14. wellx

    wellx Активный пользователь

    Я смотрел, но до тех пор пока backstep<>0 рисуется только один буфер (а так и должно быть, ибо только при нуле возможет ЗЗ на одном баре). все ИМХО конечно.
     
  15. nen

    nen Профи форума

    Внес маленькое изменение в код индикатора.
    Заменил строчку
    if (Bars-IndicatorCounted()>3) for (shift=Bars-1;shift>=0; shift--) {ExtMapBuffer[shift]=0; ExtMapBuffer2[shift]=0;}

    на

    if (Bars-IndicatorCounted()>3) for (shift=Bars-1;shift>=0; shift--) {ExtMapBuffer[shift]=0; ExtMapBuffer2[shift]=0;tiBar_0=0;}

    Так будет работать лучше.
     

    Вложения:

  16. Mathemat

    Mathemat Новичок

    Привет фанатам ZZ!

    Очень ценю усилия nen, wellx и остальных участников в попытке превращения ZZ в что-то достойное и более-менее универсальное. Внесу свои 5 копеек.

    Считаю, что ZZ в чистом виде, т.е. как непрогнозируемый индюкатор, использовать крайне непросто: к тому моменту, когда он более-менее надежно выдает экстремум, бывает поздно. Т.е. он сильно запаздывает (как и системы, основанные на мувингах, пусть даже практически незапаздывающих).

    В то же время на истории его сигналы великолепны, практически независимо от версий. Это обстоятельство просто надо научиться использовать. Как разумный и надежный вариант вижу пока только использование ZZ, приведенного к форме сигнала, в качестве выхода нейросети (или даже ГА), причем на входе должны быть достаточно сглаженные ряды данных без потери информации о цене (это не так и сложно сделать). Какая это будет сеть - классифицирующая или интерполирующая, - пока не знаю, надо экспериментировать.

    Но прежде всего, мне кажется, нужно приложить усилия к тому, чтобы разные варианты чистых ZZ отличались друг от друга минимально.

    Известно, что стандартный ZZ из МТ4 трехпроходен. Насколько я понимаю, в большинстве однобуферных версий сильно отличаются именно варианты реализации первого прохода, а дальше все идет так же, как и в стандартном.

    Суть моего предложения сводится к тому, чтобы сделать первый, грубый проход одинаковым для всех ZZ, а все отличия по фильтрации получившихся точек излома перенести во второй проход. Инструмент для первого прохода в МТ4 есть: это индикатор Fractals. Он аккуратно, не пропуская значимые изломы, помечает всё. Да, изломов получается слишком много. Но дальше можно их как угодно фильтровать, согласно выбранному критерию. Вот несколько критериев навскидку:

    - минимальная длина луча, скажем, 50 пунктов,
    - максимальный откат после каждого мелкого свинга внутри луча - не более, скажем, 30 пунктов,
    - минимальное расстояние между точками излома, скажем, 7 баров,
    - может быть, стандартный критерий шлифовки от МТ4,
    - и т.п.

    Не думаю, что стоит комбинировать эти критерии, так как результирующий критерий может стать слишком жестким и обременительным, и мы будем пропускать значимые изломы.

    А дальше так: выбор критерия тонкой фильтрации изломов (final cutting) реализуем в виде оператора switch. Ну а третий проход и так тривиален. Полная логика алгоритма ZZ по идее должна получиться намного проще.

    Ну и, конечно, надо подумать о приличной оптимизации индюкатора с помощью функции IndicatorCounted(), чтобы не грузить процессор. В принципе и вариант с ограничением обработки нулевого бара очень элегантен.
     
  17. wellx

    wellx Активный пользователь

    Одна из целей - сделать однопроходным, я не вижу реальных проблем в оценке трех - пяти экстремумов назад от текущего бара.

    Почти все из этого можно сделать как опции, другими словами даватьприоритете тому или иному варианту в сложных случаях.
    Но кроме этого индикатор должен иметь свойство повторяемости при проходе по истории, при возврате назад при тестинге, ОПРЕДЕЛЕНИЕ первой точки экстремума на истории ,нужен четко прописанный словами алгоритм). Другими словами индикатор должен быть стабильным в работе и применении, заодно иметь за своим кодом какой-то реальный физический или философский смысл.
     
  18. nen

    nen Профи форума

    Приведенная ниже цитата задела. Хочу прояснить свою позицию по отношению к Зигзагам.
    Немного отойду от темы ветки "Алгоритмы ZZ". Есть два подхода к использованию зигзагов, и не только зигзагов.1) От теории к практике.2) От практики к теории.Попробую изложить здесь свой подход. Точка зрения, что зигзаг дает сильно запаздывающие сигналы, известна. Вопрос в том, как к этой теме подойти. В последнем номере (153) Forex Magazine есть статья "Моделируя будущее" Ларри Песавенто. В статье Ларри Песавенто излагает свою точку зрения, что можно торговать прогнозируя будущее движение цены.Я придерживаюсь такой же точки зрения. И уже имея такую позицию стал искать инструменты, с помощью которых можно прогнозировать будущее развитие рынка. В результате поисков пришел к тому, что для этих целей как нельзя лучше подойдет зигзаг. То есть у меня мнение по сигналам, получаемым от зигзага прямо противоположное приведенному в вышеприведенной цитате.Приведу несколько примеров.23 августа 2006 года было спроектировано дальнейшее движение канадского доллара.<a href="http://onix-trade.net/forum/index.php?s=&s...indpost&p=93577" target="_blank"><a href="http://onix-trade.net/forum/index.php?s=&s...indpost&p=93577" target="_blank"><a href="http://onix-trade.net/forum/index.php?s=&s...indpost&p=93577" target="_blank"><a href="http://onix-trade.net/forum/index.php?s=&s...indpost&p=93577" target="_blank"><a href="http://onix-trade.net/forum/index.php?s=&s...indpost&p=93577" target="_blank"><a href="http://onix-trade.net/forum/index.php?s=&s...indpost&p=93577" target="_blank"><a href="http://onix-trade.net/forum/index.php?s=&s...indpost&p=93577" target="_blank"><a href="http://onix-trade.net/forum/index.php?s=&s...indpost&p=93577" target="_blank"><a href="http://onix-trade.net/forum/index.php?s=&s...indpost&p=93577" target="_blank">http://onix-trade.net/forum/index.php?s=&s...indpost&p=93577</a></a></a></a></a></a></a></a></a>[​IMG]В декабре 2006-январе 2007 г.г. канадский доллар пришел к этим целям.Это один из примеров использования зигзага для прогнозирования будущего развития рынка. Примеров можно привести много. Многие инструменты для проектирования будущего развития рынка сейчас реализованы в индикаторе ZUP. Я в своей торговле все больше и больше применяю ZUP.Ниже приведу отчет по счету в Брезане с 23 августа 2006 года по 17 января 2007 года. Maximal Drawdown в данном случае - это снятие денег с депозита. DetailedStatement3.gif Ниже приведен детализированный отчет.<html><table><tr align=right> <td colspan=2>Gross Profit:</td> <td colspan=2 style=mspt>155 867.78</td> <td colspan=4>Gross Loss:</td> <td style=mspt>8 108.79</td> <td colspan=3>Total Net Profit:</td> <td colspan=3 style=mspt>147 758.99</td></tr><tr align=right> <td colspan=2>Profit Factor:</td> <td colspan=2 style=mspt>19.22</td> <td colspan=4>Expected Payoff:</td> <td style=mspt>103.55</td> <td colspan=4> </td></tr><tr align=right> <td colspan=2>Absolute Drawdown:</td> <td colspan=2 style=mspt>0.00</td> <td colspan=4>Maximal Drawdown (_%_):</td> <td style=mspt>5 000.00 (3.22%)</td> <td colspan=4> </td></tr><tr><td colspan=13 style="font: 1pt arial"> </td></tr><tr align=right> <td colspan=2>Total Trades:</td> <td colspan=2 style=mspt>1427</td> <td colspan=4>Short Positions (won %_):</td> <td style=mspt>664 (97.44%)</td> <td colspan=3>Long Positions (won %_):</td> <td colspan=3 style=mspt>763 (98.30%)</td></tr><tr align=right> <td colspan=8>Profit Trades (%_ of total):</td> <td style=mspt>1397 (97.90%)</td> <td colspan=3>Loss trades (% of total):</td> <td colspan=3 style=mspt>30 (2.10%)</td></tr><tr align=right> <td colspan=2>Largest</td> <td colspan=6>profit trade:</td> <td style=mspt>1 800.00</td> <td colspan=3>loss trade:</td> <td colspan=3 style=mspt>-1 331.05</td></tr><tr align=right> <td colspan=2>Average</td> <td colspan=6>profit trade:</td> <td style=mspt>111.57</td> <td colspan=3>loss trade:</td> <td colspan=3 style=mspt>-270.29</td></tr><tr align=right> <td colspan=2>Maximum</td> <td colspan=6>consecutive wins ($):</td> <td style=mspt>254 (10 512.20)</td> <td colspan=3>consecutive losses ($):</td> <td colspan=3 style=mspt>5 (-2 176.40)</td></tr><tr align=right> <td colspan=2>Maximal</td> <td colspan=6>consecutive profit (count):</td> <td style=mspt>33 310.16 (156)</td> <td colspan=3>consecutive loss (count):</td> <td colspan=3 style=mspt>-2 176.40 (5)</td></tr><tr align=right> <td colspan=2>Average</td> <td colspan=6>consecutive wins:</td> <td style=mspt>87</td> <td colspan=3>consecutive losses:</td> <td colspan=3 style=mspt>2</td></tr></table></div></body></html>
     
  19. nen

    nen Профи форума

    Исходя из вышеизложенного считаю, что к зигзагу надо подходить с практической точки зрения.
    Излишнее теоретизирование уводит в сторону.
     
  20. Mathemat

    Mathemat Новичок

    Большое спасибо, nen, отчет впечатляет и дает и мне точку опоры. Будем искать.

    А Вы, на мой взгляд, не опровергли, а подтвердили мою точку зрения. Я и сам ищу подход к ZZ, использующий его как инструмент прогноза, а не в виде статичных, сформировавшихся сигналов, как, скажем, в системе MACD. Говоря о сильном запаздывании, я имел в виду именно такие "статичные" сигналы.

    P.S. А зверьки Гартли - это и правда любопытно. Но не видно аналогичных соотношений по времени. Их у него нет?
     

Поделиться этой страницей