Indicadores: ZigZag

 

ZigZag:

O indicador Zigzag é uma série de seções conectando picos e vales significativos no gráfico do preço.

Indicador ZigZag

Autor: MetaQuotes Software Corp.

 

Como posso obter os valores do preço de fechamento das barras superior e inferior de um ziguezague no código do EA?

 

O indicador Zig-Zag é extremamente útil para determinar tendências de preços, áreas de suporte e resistência e padrões clássicos de gráficos, como cabeça e ombros, fundos duplos e topos duplos. O indicador Zig-Zag usa tanto as oscilações máximas quanto as mínimas em seu cálculo:

  • Swing Highs: Quando um preço (geralmente o fechamento) é maior do que o preço anterior e posterior a ele.
  • Swing Lows: Quando um preço é menor do que o preço anterior e menor do que o preço posterior a ele.

O indicador Zig-Zag pode usar tanto porcentagens quanto pontos em sua construção. Para construir o indicador Zig-Zag, deve haver uma determinada porcentagem ou número de pontos entre uma oscilação alta e uma oscilação baixa antes que uma linha seja desenhada. O gráfico abaixo do contrato de futuros do E-mini Nasdaq 100 ilustra visualmente a diferença entre um Zig-Zag de retração de preço de 3% e um Zig-Zag de retração de preço de 5%:


Observe como, no gráfico acima, um Zig-Zag com uma porcentagem de retração de 3% cria linhas mais distintas do que o Zig-Zag com uma porcentagem de retração de 5%. O objetivo de usar um Zig-Zag com uma porcentagem de retração maior é ajudar a eliminar o ruído do preço que não é significativo para a análise do trader.

O indicador Zig-Zag é extremamente eficaz na descoberta de ciclos de ações e, ao mesmo tempo, elimina o ruído de preços de curto prazo.

O indicador Zig-Zag é extremamente eficaz na filtragem de ruídos de curto prazo e na identificação de tendências e mudanças significativas nos preços de mercado.

Abaixo está um gráfico do contrato de futuros do E-mini S&P 500 que ilustra a eficácia do indicador Zig-Zag em encontrar áreas de suporte e resistência e rupturas de preço:


O gráfico acima do e-mini usa um valor de retração Zig-Zag de 5%; portanto, somente as alterações de preço de 5% ou mais são mostradas, ajudando um trader ou investidor de longo prazo a determinar áreas importantes de suporte, resistência e áreas de rompimento de preços.

À esquerda do gráfico, o S&P 500 estava formando um padrão de consolidação triangular. Quando os preços romperam a resistência, foi gerada uma compra de longo prazo. Na parte central do gráfico, o indicador Zig-Zag foi eficaz em ilustrar que o S&P 500 estava em um canal de preços ascendente. Comprar nas áreas em que o preço tocou a linha de tendência de suporte inferior e vender quando os preços tocaram a linha de resistência superior teria se mostrado extremamente lucrativo.

O uso do indicador Zig-Zag em negociações de curto prazo também pode ser lucrativo. O gráfico abaixo da Intel (INTC) mostra um padrão clássico de cabeça e ombros facilmente observado pelo indicador Zig-Zag (retração de US$ 1):


O padrão de cabeça e ombros facilmente identificado deu um sinal de venda quando o preço no ombro direito rompeu a linha de tendência inclinada para cima.

O indicador Zig-Zag é uma excelente ferramenta de análise técnica para identificar padrões clássicos de gráficos. O indicador Zig-Zag também é eficaz para reduzir o ruído e ajudar o trader técnico a ver a verdadeira direção do mercado.

 
me ajuda a entender o comportamento do zz
 

Nesse código, especificamente no bloco abaixo, as variáveis 'res' são necessárias? Em outros blocos, entendo seu uso, mas não nesse bloco.

//--- rejeição final
   for(shift=limit;shift<rates_total && !IsStopped();shift++)
     {
      res=0.0;
      switch(whatlookfor)
        {
         case 0: // busca por pico ou gramado
            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: // busca por pico
            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: // busca por gramado
            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);
        }
     }


É realmente necessário?

 
soi kawasaki:

Nesse código, especificamente no bloco abaixo, as variáveis 'res' são necessárias? Em outros blocos, entendo seu uso, mas não nesse bloco.


realmente necessárias?

Verifique o que está sendo feito com ela antes do código que você está mostrando. Ou melhor ainda: remova-a e veja o que acontece com o indicador de ziguezague
 
Mladen Rakic:
Verifique o que está sendo feito com ele antes do código que você está mostrando. Ou melhor ainda: remova-o e veja o que acontece com o indicador de ziguezague

Obrigado por sua resposta:)

Fiz o Print() para verificar o valor e também onde ele é usado, mas não consegui descobrir por que ele é necessário nesse bloco.

Também o removi e executei o indicador, mas ele também funciona bem sem ele.

Fiquei curioso porque esse é o indicador padrão fornecido com o MT5.

Só estava buscando uma segunda opinião, caso eu tenha entendido errado a existência do uso nesse bloco de código.

 
Olá, queridos membros da comunidade! Gostaria de pedir que compartilhassem suas ideias sobre a seguinte pergunta: com base no que podemos supor (ou melhor, afirmar o fato com certeza) que a formação do segmento atual entre os extremos extremos está completa. Estou bem ciente da complexidade dessa questão, portanto, ficarei grato por qualquer ideia. E há mais uma pergunta - se o parâmetro Depth - Número mínimo de velas como um intervalo entre extremos (máximos ou mínimos), então como pode acontecer que o indicador desenhe uma linha entre o máximo e o mínimo no valor desse parâmetro 12, mas ao mesmo tempo entre o máximo e o mínimo - o número de velas é menor que 12?
 
Andrey Kornishkin #:

Como posso obter os valores do preço de fechamento das barras superior e inferior de um ziguezague no código do EA?

Use iCustom() para percorrer as barras da direita para a esquerda no gráfico em busca de um valor não vazio do buffer do indicador. Aqui está a barra que você está procurando; você pode obter qualquer preço de candlestick a partir dela.

 

Aleksandr Shirin desenhar uma linha entre o máximo e o mínimo no valor desse parâmetro 12, mas ao mesmo tempo entre o máximo e o mínimo - o número de velas é menor que 12?

Isso também depende do número de pontos passados pelo preço (parâmetro ExtDeviation).