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

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

  1. kharko

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

    NEN, советую в ZUPе в функцию init() вставить такой код:

    Код:
    name="ZUP";
    while(WindowFind(name)!=-1){ExtComplekt++;name=name+ExtComplekt;}
    
    IndicatorShortName(name);
    Тогда параметр ExtComplekt выставляется автоматом.

    По ЗЗ меня тут посетила такая мысль: может плюнуть на вылавливание хаев и лоев, а привязаться к любимому Close или Open.
    High и Low - величины случайные, могут произойти в любой момент времени. Close и Open - они более-менее точно привязаны ко времени.
     
  2. nen

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

    ЗА строчку в init() спасибо. А вот с Close или Open не согласен. High и Low величины не случайные. С Close или Open будет совсем другая мдеология индикатора. И фибы в этом случае работать не будут... И паттерны Gartley также будут строиться не те...

    В общем, все будет сломано... Строить по High и Low - принципиальное решение.
     
  3. kharko

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

    Случайные величины я имел ввиду по времени. Хай или лоу может быть в начале, середине, в конце таймсерии. Close и Open в этом отношении четко. Думаю для них как раз числа Фиба будут работать.
     
  4. nen

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

    Делайте свой индикатор на эту тему. Будут хорошие результаты - прекрасно...
     
  5. kharko

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

    Сделан новый УНИВЕРСАЛЬНЫЙ ЗигЗаг.
    Теперь можно стоить и по другим ценам.
    Добавлен параметр Price:

    0 - зигзиг по экстремумам High и Low
    1 - зигзиг по экстремумам Open
    2 - зигзиг по экстремумам Low
    3 - зигзиг по экстремумам High
    4 - зигзиг по экстремумам Close

    Обращаю внимание на Price=4. При этом параметре возможно выявление новых стабильных закономерностей.
     

    Вложения:

  6. wellx

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

    В голове последнее время крутится идея ввести в ЗЗ некоторые дополнения по логике:
    - Отрисовывать новый луч при превышении некоторой величины в пунктах или процентов от большего значения из последних двух лучей.
    - Если не рисовать новый луч согласно числам Фибо (слишком уж радикально), то хотя бы в точке перелома писать число баров с момента последнего перелома, что может помочь выявить близость к числам ряда Фибо. Это добавит силу данному перелому.
     
  7. Talex

    Talex Техник

    Привет всем.
    Вот и у меня засела эта мысль после прочтения темы "Формализованая начертательная геометрия", кажется с форума форексклуба.
    Сделал свой зигзаг, 2-ую версию. И добавил туда такую возможность.
    Параметры:
    ExtPoint -Количество расчитываемых точек
    ExtDepth - Глубина поиска
    ExtDeltaPips- Изменение цены в пипсах, чтобы появился новый луч. Если больше нуля, то ExtDeltaPrice не используется
    ExtDeltaPrice=0.005; (0,005-это на 0.5%). Изменение цены от среднего значения, чтобы появился новый луч
    ExtBarRound -количество баров за которые находиться средняя цена инструмента (по цене (High+Low)/2
    ExternalBar - true - обрабатывать внешний бар, false -нет
    Преимущества перед другими зигзагами в следующем:
    - расчитывает только указаное число точек, не надо считать всю историю
    - использует один цикл
    - позволяет искать переломы ЗЗ по глубине, по изменению цены и в комбинации этих двух способов.
    Тестировался совсем немного, поэтому возможны ошибки. Если таковые найдуться, просьба сообщить.

    P.S. В индикаторе старался все комментировать.
    С уважением.

    Посмотреть вложение ZigZag_Talex_2.mq4
     
  8. wellx

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

    Мне кажется что лучше не на цену привязываться, а на длину луча(ей). Это более универсально , что-ли. Проценты от цены считать и осмысливать сложнеее.

    З.Ы. Если интересно , 80% баров евробакса на часовках не превышают 29 пунктов.

    Назревает побочная программка для импорта историй по разным таймфреймам для стат анализа.
     
  9. Talex

    Talex Техник

    Да пожалуйста, используйте ExtDeltaPips или Вы длину луча в чем-то другом измеряете?

    ExtDeltaPips- Изменение цены в пипсах, чтобы появился новый луч. Если больше нуля, то ExtDeltaPrice не используется.

    И если 80% баров евробаксов на часовках не превышают 29 пунктов, то на другой паре это не так, поэтому если не привязываться к паре, то более универсально имено в процентах. ИМХО, конечно.
     
  10. wellx

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

    Я имел ввиду что параметр процентов лучше применять к длине луча, а не к средней цене.
    Про пипсы я знаю и пробую. Для каждой пары и таймфрейма надо искать свои значения.
     
  11. Talex

    Talex Техник

    Прошу прощенья, сразу не понял. Чесно говоря не совсем понимаю для чего имено так, ведь если будет хороший(продолжительный) тренд, то для отрисовки нового луча понадобиться и хорошая коррекция, а если дальше флэт.
     
  12. Charismatic

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

    Мне довольно интересно. Но мне интересен обычный зиг-заг, к котором у я привязываю другие методы исследования (чаще экспертные)

    Мне не нужно никаких расчетов по прошлым барам, так как я не собираюсь вписывать зиг-заг в какой-то паттерн. Интересно, что формальный алгоритм так никто и не описывает. Хотя вроде чего проще?

    Девиации (минимума расхождения) в моем варианте зиг-зага нет, так как она вроде не требуется. Но вставить совсем нетрудно. Вообще, индикатор очень простой. :)

    Стандартный индикатор из омеги меня не устроил только потому, что он не переключается пока не найдей новый пивот. И это раздражает.

    Попробую описать алгоритм:

    Сначала ищем первую линию в начальной загруженной историии. Если линиии ската или подъема одинаковы по амплитуде - выбирает ту, которая длинее, Если одинаковы по длине — выбираем ту, которая началась раньше. Если начались они на одном баре — берем подъем. Но линиии всегда разные по амплитуде, так что дальнейшее - теория.

    А дальше считаем, что бар длинее, чем переключаетель (depth) - не вполне законен. Но чтобы как-то его обрабатывать — тенденция продолжается, переключение игнорируется на таком баре.

    Принудительное расхождение между максимумами и минимумами мне не нравится просто потому, что всегда лучше задать побольше величину амплитудного переключателя (depth) хотя сделать
    дивиацию довольно просто. Просто, если это — расхождение между соседним минмумом и максимумом. Это единственная осмысленная в моем представлении девиация.

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

    Но EL, хоть и мощнее - но слелан для тупого американа. Так что ограничусь алгоритмом.

    Чик-чик: процессор он не грузит вообще. Вот нужно добавить обратный ход валюты, чтобы он совсем не скучал. И еще конечно есть масса идей...
     
  13. natlam

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

    Обратитесь к Kharko или NENу? Возможно они смогут помоч в реализации сего алгоритма в МТ4
     
  14. kharko

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

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

    Мой алгоритм таков:
    Ищем ближайший экстремум. Если на промежутке depth не произошло обновление экстремума, ищем противоположный. Если оба экстремума выпали на один бар, то оба и выбираем, как экстремумы ЗЗ, так, чтобы чередовались максимум и минимум. Реализацию данного алгоритма можно посмотреть здесь.
     
  15. Charismatic

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


    MT4 Я не пользуюсь принципиально, уважаемый natlam! Он глюковат, и не имеет нужных возможностей. Здесь все его любят, поэтому позвольте мне его не критиковать.

    Амплитуда по цене: и это отдельно, только как стартовая позиция. Дальше-то какой алгоритм? Обрабатывается единственный текущий бар - и ничего более.

    Есть продолжение тендеции - продолжаем. Есть условие для переключения - переключаем. Нет такого - ничего не делаем.

    Чуть сложнее делать максимальный откат на каждом ходе валюты. Но это пока не сделал. ;)

    depth - это вроде предложено как амплитуда. Во всяком случае я предлагаю такую терминлогию.

    • Минимальная амплитуда (разница в цене, в пипсах или процентах)
    • полупериод переключения - минимальное время или к-во баров до переключения. При принудетельной задержке - можно называть задержкой


    Задержка и амплитуда - по-моему лучше, чем девиация и глубина. Понятней. Но кому что нравится.
     
  16. natlam

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

     
  17. natlam

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

    Кстати туда уже переписали zz_ensign корорый реализовал НЕН.
     
  18. Charismatic

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

    Когда-то появляется альтернатива: торговать или писать?

    Для себя, конечно, пишешь только самое необходимое. А дальше — как повезет либо ты заказываешь себе функции и индикаторы. Либо сам уж пишешь для кого-то.

    Но в России такого рынка нет. Да и единственный рынок такого рода - это рынок для Омеги.

    Для Россиян он закрыт. А интересен он не крупным фирмам, а частным программерам. Период становления здесь достаточно сложный.

    Но все таки я возобновляю, идеи которые работали у меня раньше. Именно поэтому аккуратен с терминологией: чтобы внятно что-то объяснить программисту или заказчику нужно крайне точно подбирать термины
     
  19. wellx

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

    Почему приоритет подъему? Логичнее пропустить этот бар и идти далее, пока не будет однозначного результата.
     
  20. wellx

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

    Выкладываю для обсуждения и тестирования альфу очередного ЗигЗага.

    Условно называемый как двухуровневый ЗЗ.

    Параметры
    - StLevel
    - BigLevel
    - minbars

    Точки на вершинах красного и синего цвета - история перехода ЗЗ в развитии. в принципе можно использовать для статистики, ну и для наглядности.

    Описание индикатора:
    При написании индикатора преследовались следующие задачи - однопроходность (от более старого к более новому бару) для повышения скорости , отсутствие потери лучей при приходе новых баров. В целом задумывается как инструмент для торговых систем, т.к. потери лучей в существующих ЗЗ меня не устраивают при дальнейшей работе в МТС.

    На данный момент индикатор отрабатывает только два уровня в пунктах . Тестируется по евродоллару на часовках. Отсюда первое предупреждение - данные значения по умолчанию действительны только для данной пары и данного таймфрейма. Нулевой бар пересчитывает только если тик пришел с новым хай или лоу.

    При определении данных величин преследовалась следующая идея : имеются два уровня , при преодолении которых отрисовывается новый луч. Первый уровень задается параметром StLevel и срабатывает при прошествии minBars баров. Второй уровень задает отрисовку , если значение валюты прошло более и равное BigLevel пунктам. Это делается дабы не пропустить сильные движения.
    Значения по умолчанию приняты исходя из соотношений Фибо по массиву истории баров. StLevel - это значение в пунктах , которое больше или равно 37% от всего массива (High-Low) баров. Другими словами в 37% случаев разница между хай и лоу не превышает данного уровня на всем доступном массиве исторических данных.
    Аналогично для Biglevel, но для него это уровень в ~= 67% от значений (High-Low).
    Упор на (High-Low) вызван для убирания волатильности внутри бара на данном таймфрейме. Именно по этому требуется некоторая несложная работа по каждой валютной паре и каждому таймфрейму.

    Работа с внешним баром - используется принцип "продолжение сильнее изменения" , т.е. при прочих равных отрисуется вершина в сторону что и ближайшая предыдущая. Если ЗЗ был снизу вверх, то отрисуется новый хай. И соответственно , если наоборот.

    Работа на нулевом баре. Рассмотрим вариант последнего луча снизу -вверх;
    - если сначала отрисуется новый низ, то луч появится , но, ели затем появится новый хай, больше чем хай ЗЗ до нулевого бара преимущество получит новый хай. Т.е. на нулевом баре мы также придерживаемся принципа "продолжение сильнее изменения".
    Данное замечание в основном для тех, кто будет использовать данный ЗЗ в своих экспертах. Отработку данной особенности надо брать разработчику МТС.

    Планы по развитию индикатора :
    - вылавливание ошибок
    - добавление возможности работы про уровням Фибо на базе либо среднего значения по N барам или по среднему от расстояния (High-Low) от N лучей ЗЗ.
    - Добавить отрисовку плановых уровней относительно последнего луча
    - Если расстояние между вершинами в барах соответствует числам Фибо - вывести над вершинами числовые значения

    Посмотреть вложение ZZ_2L.zip
     

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