Индикаторы: MultiZigZag - еще один вариант зигзага. (Экономный зигзаг)

 

MultiZigZag - еще один вариант зигзага. (Экономный зигзаг):

Данная версия зигзага может одновременно выводить три зигзага как по данным с текущего таймфрейма, так и по данным с более старших таймфреймов.

Author: Eugeni Neumoin

 

- К zigzagam,давно остыл,но это,что-то новенькое.Будем посмотреть в работе,как он себя ведёт.

p.s. за explication,в коде,спасибо.)

 
!
 
satop:
!
!!!
 

Нашел ошибку.

В функции:


//+------------------------------------------------------------------+
//| Проверка корректности задания таймфрейма. Начало.                |
//+------------------------------------------------------------------+
int _period(int x, int tf)
  {
   if (tf<Period()) {ExtDepth_[x]=0; return (tf);}
   if (tf==Period()) return (0);

   switch (tf)
     {
      case 0     : {return (0);}
      case 1     : {return (1);}
      case 5     : {return (5);}
      case 15    : {return (15);}
      case 30    : {return (30);}
      case 60    : {return (60);}
      case 240   : {return (240);}
      case 1440  : {return (1440);}
      case 10080 : {return (10080);}
      case 43200 : {return (43200);}
      default    : {ExtDepth_[x]=0; return (tf);}
     }
  }
//+------------------------------------------------------------------+
//| Проверка корректности задания таймфрейма. Конец.                 |
//+------------------------------------------------------------------+

Необходимо вместо

   if (tf<Period()) {ExtDepth_[x]=0; return (tf);}

записать

   if (tf<Period() && tf>0) {ExtDepth_[x]=0; return (tf);}

 

В первоначальном варианте не будут выводиться зигзаги на текущем таймфрейме, если во внешней переменной задать GrossPeriod  = "0,0,0"

Попробую заменить код.

========================

Также напрашиваются еще некоторые сокращения кода. Но их необходимо проверить.

 

Как с перерисовкой ?

 
avals8:

Как с перерисовкой ?


Как в стандартном зигзаге. Алгоритм расчета взят из стандартного зигзага. Исправлены только явные ошибки. Про перерисовку вопрос всегда возникает, на мой взгляд, потому, что имеется желание последний максимум (минимум) считать незыблемой величиной и, соответственно, продавать от последнего максимума на первом луче, покупать от последнего минимума на первом луче. Это неверно. Стратегии работы на зигзаге несколько другие. Во первых, максимумы (минимумы) учитываются только те, которые уже не изменятся. То есть - второй и далее переломы зигзага. И графичекие построения строятся от этих переломов. Если Вы желаете уже первый луч зигзага использовать в торговле, то стратегия в этом случае будет отличаться... не буду здесь вдаваться в подробности.

Последний луч всегда будет меняться. Рынок - меняется. Иногда и второй луч может измениться - зависит от значения ExtBackstep. Используйте третий и далее лучи. Они не изменятся. Первый и второй лучи меняются. Точнее так: используйте уровни второго и далее переломов зигзага.

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

 
Спасибо за подробный ответ А возможен ли подобный вариант с High_Lowiv2i_ZigZag  который практически не перерисовывается?
 
avals8:
Спасибо за подробный ответ А возможен ли подобный вариант с High_Lowiv2i_ZigZag  который практически не перерисовывается?

Что значит подобный вариант ?

Потом, слово практически в современном языке воспринимается так: не перерисовывается, но иногда может и перерисоваться. Тут либо перерисовывается, либо не перерисовывается. Слово практически сбивает с толку.

И в MultiZigZag-е все, что далее второго перелома не перерисовывается. Не видел кода High_Lowiv2i_ZigZag, но, думаю, что неперерисовывающаяся часть - это также по смыслу получается - то, что находится после второго перелома. Конечно, в High_Lowiv2i_ZigZag скорее всего  алгоритм другой, но смысл примерно такой же. То есть берется какой-то экстремум, который отстоит от нулевого бара на достаточно большом расстоянии. Этот экстремум любой вариант зигзага перерисовавыть не будет. Интересно, какой смысл в таком случае в неперерисовывающемся зигзаге? Есть разные алгоритмы. Например, по Вильямсоновским фракталам строить зигзаг. Но после фрактала на максимуме (минимуме) находящегося у правого края графика может образоваться еще один фрактал у правого края графика выше (ниже) уже имеющегося. И зигзаг переведет правый конец первого луча на новый фрактал. Смысл-то в чем когда встает вопрос про неперерисовывающиеся зигзаги? Что Вы хотите получить от зигзага?

 

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

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

Вот, например, http://www.fibo-forex.ru/pages.php?page=592&pair=EURUSD  ( http://forum.fibo-forex.ru/viewtopic.php?t=1869 ). Но это достаточно сложно. Не все смогут это освоить.

Сложность в последнем посте страницы  http://forum.fibo-forex.ru/viewtopic.php?t=1827&postdays=0&postorder=asc&start=75 описана и на следующей странице имеется ответ.

==========

Каждый алгоритм преследует свои цели. Есть зигзаги на основе свингов Ганна, например. Но в них "заложен" ганновский подход к анализу рынка. Есть множество других алгоритмов. У ang3110 интересный алгоритм (Он его на Пауке выкладывал. Давно. И немного в другой реализации.). Он привел картинку с этим зигзагом на текущих соревнованиях советников (октябрь 2008 года). Просто желательно понимать, с каким зигзагом имеем дело и где этот зигзаг лучше всего применять. К сожалению, исследований в этой области в открытом доступе почти нет, или же такие исследования надо собирать по крупицам.

 

всегда и везде - если идет какое -либо обсуждение,  почти на каждой странице кто-то вскакивает  с тем-же вопросом: "Кто знает - а этот индюк перерисовывается  или нет?"

с мультитаймфреймовыми  и сигнальными (на открытом баре) уже задолбалиб а у Нена здесь - и МТФ и ЗЗ   :  )))))

Нен, хороший метод - окрашивать в другой цвет   (желтый, предупредительный) не завершивший формирование сигнал, бар, вершину - все что подлежит или может быть изменено.

плюс если оставишь (опционально) любой знак на отмененной вершине -  поможет здорово в работе и при бэктесте и снимет вопросы о перерисовках 

кстати, кто интересуется, ЗЗ поинтер, "трассирующий ЗЗ" здесь http://codebase.mql4.com/ru/code/7401  (только замените стрелки на точки - это локальные вершины, а не торговые сигналы); zigzag-pointerV2 indicator;   zz_history:    http://codebase.mql4.com/ru/code/8202

 

Рашид, похоже я буду работать над кодом еще. Сделал индикатор. Вроде все заработало как надо. Но в выходные не было возможности все проверить. Проверять необходимо на потоке котировок, которого нет  выходные. Тестер не дает возможности все проверить. Опубликовал работу. А потом в реальном потоке котировок начали выплывать недоработки. Попал в собственную ловушку. Поторопился с публикацией. Сознание некачественно сделанной работы не дает покоя.

Так что еще пооптимизирую зигзаг. Все-таки хочется довести работу до совершенства.

Причина обращения: