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

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

  1. wellx

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

    Дык, если кто ткнёт меня в ошибку носом -исправлю. Алгоритм описал выше.Просто документация в МТ - да, ладно - проехали. Тем более скоро опять все по новой и без учета просьб.
     
  2. nen

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

    Покопаюсь в коде.

    1. Непонятно, как такой цикл вообще может работать:

    <!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->for (k=(Bars-count-1);k<=0;k--)<!--c2--></div><!--ec2-->

    Должно быть:

    <!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->for (k=(Bars-count-1);k>=0;k--)<!--c2--></div><!--ec2-->

    2. В теле этого цикла первая строчка неправильно:

    <!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->if (k > 0) return(0);<!--c2--></div><!--ec2-->

    Должно быть:

    <!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->if (k < 0) return(0);<!--c2--></div><!--ec2-->

    А по хорошему, эта строчка вообще не нужна, так как условие цикла <b>k>=0</b> не допускает значений k<0.


    Как только внес эти исправления, зигзаг стал рассчитываться мгновенно. Посмотрю за построениями первого луча. Если не замечу ошибок, выложу исправленный зигзаг.

    Заметил вывод мусора -обычная проблема многих зигзагов. Добавлю проверку, чтобы не было мусора.
     
  3. nen

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

    Версия зигзага, разработанного wellx, с внесенными в код исправлениями.

    Внес в код исправления и добавления.

    Основное добавление. Сейчас по умолчанию производится автоматическая настройка параметров StLevel и BigLevel.
    В авторском варианте эти параметры подобраны для работы по евре на часовом таймфрейме. Значения параметров по умолчанию взяты из авторского варианта.

    При автоматическим расчете этих параметров (auto=true) все бары, имеющиеся в истории, выстраиваются в ряд по возрастанию размера. Отбрасывается minBar=38.2% баров. Берется размер в пунктах первого из оставшихся баров и присваивается это значение параметру StLevel.
    Аналогично делаем для параметра BigLevel. Только в этом случае отбрасывается maxBar=61.8% баров.

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

    Придумано оригинально. Респект wellx.
     

    Вложения:

    • ZZ_2L_nen.mq4
      Размер файла:
      12,8 КБ
      Просмотров:
      226
  4. nen

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

    Сбои на первом луче появляются.

    usdcad_07_11_06_m1_nf.gif
     
  5. wellx

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

    Блииин, ну вот я же говорю - гглаз тупо замылен. В упор не видел. Огроменное спасибо!
     
  6. wellx

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

    Не соглашусь. выход нужен для пропуска всех непросчитанных баров кроме 0го. Потому что историю ЗЗ я и так рисую, а рисовать на всех предыдущих барах - просто тратить ресурс проца. Вот здесь я бы не стал менять. Вот первое замечание про k<= там , да - мой косяк.
     
  7. nen

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

    Там всего один или два бара просчитываются. Никакого особого ресурса и не тратится. Тогда надо было делать не цикл <b>for</b>, а просто условие <b>if</b>. Зачем делать цикл, если требуется расчитать один бар?

    Зачем это:
    <!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->for (k=(Bars-count-1);k>=0;k--)<!--c2--></div><!--ec2-->

    Вместо этого проще сделать так:

    <!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->if (k=0)<!--c2--></div><!--ec2-->

    И что делать, когда два бара не посчитаны?
    Читаем описание:

    <b>int IndicatorCounted( )
    Функция возвращает количество баров, не измененных после последнего вызова индикатора. Большинство подсчитанных баров не нуждается в пересчете. Функция используется для оптимизации вычислений.

    Замечание: самый последний бар не считается посчитанным, и в большинстве случаев необходимо пересчитывать только его. Однако бывают пограничные случаи, когда вызов пользовательского индикатора производится из эксперта на первом тике нового бара. Возможна ситуация, что последний тик предыдущего бара не обработан (по той причине, что в момент прихода этого последнего тика обрабатывался предпоследний тик), и пользовательский индикатор не был вызван и поэтому не был рассчитан. Чтобы избежать в такой ситуации ошибок расчета индикатора, функция IndicatorCounted() возвращает реально посчитанное количество баров минус один. </b>

    Мне кажется, надо искать, почему первый луч зигзага иногда выводится неправильно, а просчет двух баров вместо одного - не стоит даже и обсуждать.
     
  8. nen

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

    Новая версия зигзага, которая будет в следующей версии ZUP в режиме DT - ExtIndicator=6 вместо ZigZag_new_nen3.

    Это модификация оптимизированного трехпроходного зигзага из метатрейдера.
    Добавлен параметр <!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->ExtLabel<!--colorc--></span><!--/colorc-->.
    <!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->ExtLabel<!--colorc--></span><!--/colorc-->=0 - построения как у старого зигзага
    <!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->ExtLabel<!--colorc--></span><!--/colorc-->=1 - выводятся метки, где условно должен был начаться новый луч. Иногда метка появилась (на текущих котировках. На истории такого не наблюдается :) ), а новый луч не появился. Он может и не появиться, а продолжится старый луч. В данном случае метка дает сигнал, о том, что "назревает" появление нового луча. В данном зигзаге сложно с определением точки появления нового луча. Известно, что в метатрейдеровском зигзаге иногда первый луч может исчезнуть и продолжиться старый луч.

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

    В версии зигзага, выложенной здесь, метка как раз является первой потенциальной неотфильтрованной точкой. Метки также ставятся на переломах зигзага.
     

    Вложения:

  9. travian

    travian Новичок

    Данные метки имеют свойство перерисовываться? К сожалению у меня нет возможности это проверить. Форекс отдыхает, а при попытки прикрепить индикатор к визуальному тестеру терминал зависает.
     
  10. nen

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

    Метки останутся на месте. А луч - да, перерисуется. И пойдет дальше.

    Посмотрите картинки здесь <a href="http://onix-trade.net/forum/index.php?showtopic=118&pid=273625&st=3420%EF%BF%BDentry27362" target="_blank"><a href="http://onix-trade.net/forum/index.php?show...BF%BDentry27362" target="_blank"><a href="http://onix-trade.net/forum/index.php?show...BF%BDentry27362" target="_blank"><a href="http://onix-trade.net/forum/index.php?show...BF%BDentry27362" target="_blank"><a href="http://onix-trade.net/forum/index.php?show...BF%BDentry27362" target="_blank">http://onix-trade.net/forum/index.php?show...BF%BDentry27362</a></a></a></a></a>
     
  11. travian

    travian Новичок

    Просто у меня получилась вот такая картинка.
     

    Вложения:

    • 1.gif
      1.gif
      Размер файла:
      22 КБ
      Просмотров:
      28
  12. nen

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

    Желтая точка вверху - метка, где должен был появиться луч вниз. Голубая точка внизу - метка, где должен был появиться луч вверх. Метка остается на месте, а луч перерисовывается. На переломе специально сделана метка того же цвета, что и та, которая обозначила появление данного луча. Между метками одного цвета перемещается луч зигзага. По этим двум меткам можно вычислить время развития луча и изменение цены за время развития луча. А как применить эти вычисленные данные - вариантов много. Это уже на усмотрение конкретного человека.

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

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

    В следующей версии ZUP в режиме (DT) ExrIndicator=7 будет использоваться немного измененный зигзаг.
    Оригинальную версию этого зигзага разработал <b>klot</b>.
    Добавлен параметр <!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->ExtLabel<!--colorc--></span><!--/colorc-->. Этот параметр может принимать значения 0 или 1.
     

    Вложения:

    • DT_ZZ_nen.mq4
      Размер файла:
      4,9 КБ
      Просмотров:
      249
  14. nen

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

    В следующей версии ZUP в режиме (DT) ExrIndicator=10 будет использоваться немного измененный зигзаг со свингами.
    Добавлен параметр <!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->ExtLabel<!--colorc--></span><!--/colorc-->. Этот параметр может принимать значения 0 или 1.
     
  15. travian

    travian Новичок

    Желтая линия. По сути тот же зиг заг. Может кому пригодится.
     

    Вложения:

    • 1.gif
      1.gif
      Размер файла:
      22,8 КБ
      Просмотров:
      30
    • i_CA.mq4
      Размер файла:
      1,9 КБ
      Просмотров:
      169
  16. DDD

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

    <b>Nen</b> Swing_ZZ_1 пропускает метки. Т.е. не всегда оставляет метку на баре на котором появился, а луч пошел далее. В чем может быть проблема?
     
  17. nen

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

    Спасибо за замечание. Сейчас разбираюсь.
     
  18. nen

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

    Исправил зигзаг. В комплекте ZUP его также надо будет заменить. Другие зигзаги также проверю.

    Прежнюю версию удалю, чтобы не распростанялась недоработанная версия.

    Еще внес исправления. Также исправил первоначальную версию этого варианта зигзага.
     

    Вложения:

    • Swing_ZZ_1.mq4
      Размер файла:
      12,1 КБ
      Просмотров:
      233
    • Swing_ZZ.mq4
      Размер файла:
      11,4 КБ
      Просмотров:
      238
  19. nen

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

    Цитата из сообщения wellx об алгоритме своей версии зигзага:
    Что мы хотим в первую очередь от любого ндикатора?
    1. Помощи в анализе рынка.
    2. Идеальный вариант - получение готовых торговых сигналов.

    Еще цитаты о внешнем баре.

    <b>1. Период внешнего бара (рис. 4.8) возникает, когда максимум текущего периода времени размещен выше, чем в предыдущий период, а также, когда минимум настоящего периода времени находится ниже, чем в предыдущий период. В отличие от ситуации с внутренним баром, порядок появления максимума и минимума на дневном баре, характеризующемся внешним движением, является решающим моментом, поэтому его следует особо отметить....
    Очень важно, чтобы порядок возникновения максимума и минимума дневного внешнего движения был записан правильно, потому что либо рынок продолжает тенденцию, либо трейдер будет вынужден продвигать стоп к новому уровню. Когда тестирование индикатора малой тенденции по историческим данным, а также порядок достижения цен диапазона внешнего дня не могут быть подтверждены, то безопаснее согласиться с тем, что цена, ближайшая к открытию, появляется первой, а цена, находящаяся ближе к закрытию, фиксируется последней. (Модель, Цена и Время. Применение Теории Ганна в системах торговли. Джеймс Хьержик. стр. 59)

    2. ... допустим, что в определенный день на рынке наблюдается чрезвычайная активность: точки максимума и минимума этого дня оказались выше или ниже соответствующих точек дня предыдущего. Возникает дилемма. Чтобы определить, продолжает ли цена двигаться в прежнем направлении или отклоняется от предполагаемого курса, указывая, что и нам пора изменить свое мнение, необходимо знать последовательность появления точек максимума и минимума внутри дня. (Мастерство анализа волн Эллиота. Гленн Нили. стр. 2-8)</b>

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

    Другое дело, что потом, построив зигзаг, мы пытаемся с помощью полученной ломаной линии исследовать рынок. Кто-то пытается построить паттерны, кто-то волны Эллиота, кто-то еще как-то использовать. Правильность построения ломаной линии на внешнем баре влияет на правильность дальнейшего анализа.
     
  20. wellx

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

    Почему я взял принцип "продолжение сильнее разворота"? Всё просто: следующиё бар(ы) подскажут, если перелом есть, то мы его увидим через 1-3.. бара, а если нет, то ничего кроме шипа не получим. Лишь картинку испортим :)
     

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