Индикаторы: ZigZag

 

ZigZag:

Индикатор Зигзаг (ZigZag) соединяет отрезками точки перелома тенденции (существенные вершины и основания на ценовом графике).

Параметр минимального изменения цен определяет количество пунктов, на который цена должна переместить, чтобы сформировать новую "Зиг" или "Заг" линию. Этот индикатор отсеивает изменения на анализируемом графике, величина которых меньше заданной. Таким образом, зигзаг отражает только существенные изменения.

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

Поэтому не следует пытаться создать торговую систему на основе Зигзага: он лучше подходит для анализа исторических данных, чем для прогнозирования.

Автор: MetaQuotes Software Corp.

Индикатор ZigZag

 

Как можно в коде советника получить значения цены закрытия бара верхушки и низа зигзага?

 

Индикатор Zig-Zag чрезвычайно полезен для определения ценовых трендов, зон поддержки и сопротивления, а также классических графических моделей, таких как голова и плечи, двойное дно и двойные вершины. Индикатор Zig-Zag использует в своих расчетах как максимумы свинга, так и минимумы свинга:

  • Swing Highs: Когда цена (обычно закрытие) одновременно выше цены, предшествующей ей и следующей за ней.
  • Swing Lows: Когда цена одновременно ниже цены, предшествующей ей, и ниже цены, следующей за ней.

Индикатор Zig-Zag может использовать как проценты, так и точки при построении. Для построения индикатора Zig-Zag необходимо, чтобы между максимумом свинга и минимумом свинга был определенный процент или количество пунктов, прежде чем будет построена линия. Приведенный ниже график фьючерсного контракта E-mini Nasdaq 100 наглядно иллюстрирует разницу между ценовым откатом Zig-Zag в 3 % и ценовым откатом Zig-Zag в 5 %:


Обратите внимание, что на графике выше Зиг-Заг с процентом коррекции 3% образует более четкие линии, чем Зиг-Заг с процентом коррекции 5%. Цель использования Zig-Zag с большим процентом коррекции заключается в том, чтобы помочь устранить ценовой шум, который не имеет значения для анализа трейдера.

Индикатор Zig-Zag чрезвычайно эффективен для выявления биржевых циклов, отсеивая при этом краткосрочный ценовой шум.

Индикатор Zig-Zag чрезвычайно эффективен в фильтрации краткосрочного шума и выявлении значимых тенденций и существенных изменений в рыночных ценах.

Ниже представлен график фьючерсного контракта E-mini S&P 500, который иллюстрирует, насколько эффективно индикатор Zig-Zag находил области поддержки и сопротивления и ценовые прорывы:


На приведенном выше графике e-mini используется 5%-ный показатель Zig-Zag, поэтому показаны только изменения цены на 5% и более, что помогает долгосрочному трейдеру или инвестору определить важные области поддержки, сопротивления и прорывов цены.

В левой части графика S&P 500 формировал модель консолидации в виде треугольника. Когда цены пробивали сопротивление, формировалась долгосрочная покупка. В середине графика индикатор Zig-Zag эффективно иллюстрировал, что S&P 500 находится в восходящем ценовом канале. Покупка в тех областях, где цена касалась нижней линии тренда поддержки, и продажа, когда цена касалась верхней линии сопротивления, оказались бы чрезвычайно выгодными.

Использование индикатора Zig-Zag для краткосрочных сделок также может оказаться прибыльным. На приведенном ниже графике Intel (INTC) показан классический паттерн "голова и плечи", который легко увидеть с помощью индикатора Zig-Zag (коррекция на $1):


Легко идентифицируемый паттерн "голова и плечи" дал сигнал на продажу, когда цена на правом плече пробила наклонную вверх линию тренда.

Индикатор Zig-Zag - отличный инструмент технического анализа для выявления классических графических паттернов. Индикатор Zig-Zag также эффективно снижает уровень шума и помогает техническому трейдеру увидеть истинное направление движения рынка.

 
помогает мне понять поведение zz
 

В этом коде, конкретно в нижнем блоке, нужны ли переменные 'res'? В других блоках я понимаю их использование, но не в этом блоке.

//--- окончательный отказ
   for(shift=limit;shift<rates_total && !IsStopped();shift++)
     {
      res=0.0;
      switch(whatlookfor)
        {
         case 0: // поиск пика или лужайки
            if(lastlow==0 && lasthigh==0)
              {
               if(HighMapBuffer[shift]!=0)
                 {
                  lasthigh=high[shift];
                  lasthighpos=shift;
                  whatlookfor=Sill;
                  ZigzagBuffer[shift]=lasthigh;
                  res=1;
                 }
               if(LowMapBuffer[shift]!=0)
                 {
                  lastlow=low[shift];
                  lastlowpos=shift;
                  whatlookfor=Pike;
                  ZigzagBuffer[shift]=lastlow;
                  res=1;
                 }
              }
            break;
         case Pike: // поиск пика
            if(LowMapBuffer[shift]!=0.0 && LowMapBuffer[shift]<lastlow && HighMapBuffer[shift]==0.0)
              {
               ZigzagBuffer[lastlowpos]=0.0;
               lastlowpos=shift;
               lastlow=LowMapBuffer[shift];
               ZigzagBuffer[shift]=lastlow;
               res=1;
              }
            if(HighMapBuffer[shift]!=0.0 && LowMapBuffer[shift]==0.0)
              {
               lasthigh=HighMapBuffer[shift];
               lasthighpos=shift;
               ZigzagBuffer[shift]=lasthigh;
               whatlookfor=Sill;
               res=1;
              }
            break;
         case Sill: // поиск газона
            if(HighMapBuffer[shift]!=0.0 && HighMapBuffer[shift]>lasthigh && LowMapBuffer[shift]==0.0)
              {
               ZigzagBuffer[lasthighpos]=0.0;
               lasthighpos=shift;
               lasthigh=HighMapBuffer[shift];
               ZigzagBuffer[shift]=lasthigh;
              }
            if(LowMapBuffer[shift]!=0.0 && HighMapBuffer[shift]==0.0)
              {
               lastlow=LowMapBuffer[shift];
               lastlowpos=shift;
               ZigzagBuffer[shift]=lastlow;
               whatlookfor=Pike;
              }
            break;
         default: return(rates_total);
        }
     }


действительно нужна?

 
soi kawasaki:

В этом коде, конкретно в нижнем блоке, нужны ли переменные 'res'? В других блоках я понимаю их использование, но не в этом блоке.


Действительно нужна?

Проверьте, что она делает с ней до того кода, который вы показываете. А еще лучше: удалите ее и посмотрите, что произойдет с индикатором зигзага
 
Mladen Rakic:
Проверьте, что он делает с ним до того кода, который вы показываете. А еще лучше: удалите его и посмотрите, что произойдет с индикатором zigzag.

Спасибо за ответ : )

Сделал Print(), чтобы проверить значение, а также где он используется, но не смог понять, зачем он нужен в этом блоке.

Также я удалил его из индикатора, но и без него он работает нормально.

Мне было интересно, потому что это индикатор по умолчанию, поставляемый с MT5.

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

 
Здравствуйте, уважаемые участники сообщества! Прошу Вас поделиться своими мысялми вот по какому вопросу - исходя из чего можно сделать предположение (а лучше с уверенностьюконстатировать факт) о том, что формирование текущего отрезка между крайними экстремумами завершено. Я хорошо понмаю сложность этого вопроса, поэтому буду благодарен за любые идеи. И есть ещё один вопрос - если параметр  Depth -  Минимальное количество свечей, как интервал между экстремумами (максимумами или минимумами), то как может получаться так, что индикатор рисует линию между максимумом и минимумом при значении этого параметра 12, но при этом между максимумом и минимумом - количество свечей меньше чем 12?
 
Andrey Kornishkin #:

Как можно в коде советника получить значения цены закрытия бара верхушки и низа зигзага?

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

 

Aleksandr Shirin #:
Здравствуйте, уважаемые участники сообщества! Прошу Вас поделиться своими мысялми вот по какому вопросу - исходя из чего можно сделать предположение (а лучше с уверенностьюконстатировать факт) о том, что формирование текущего отрезка между крайними экстремумами завершено.

Только из того, что начало формироваться следующее колено индикатора. Когда закончится текущее колено, можно только гадать.

Я хорошо понмаю сложность этого вопроса, поэтому буду благодарен за любые идеи. И есть ещё один вопрос - если параметр  Depth -  Минимальное количество свечей, как интервал между экстремумами (максимумами или минимумами), то как может получаться так, что индикатор рисует линию между максимумом и минимумом при значении этого параметра 12, но при этом между максимумом и минимумом - количество свечей меньше чем 12?

Еще зависит от количества пунктов, пройденного ценой (параметр ExtDeviation).