O MultiZigZag é uma versão aprimorada do famoso indicador ZigZag, que foi desenvolvido entre 2005 e 2006 e está disponível no MetaTrader 4. Este algoritmo é amplamente utilizado em muitos indicadores personalizados e foi inicialmente traduzido para MQL4 por um desenvolvedor chamado Rosh. Agradecemos a ele por isso! Se alguém souber quem foi o criador original do algoritmo, por favor, deixe o nome ou apelido nos comentários. Também estou curioso para saber em qual linguagem foi escrito e em qual plataforma de negociação foi utilizado.
Vamos falar sobre as principais desvantagens da versão original do ZigZag:
- Alta carga no processador: O ZigZag original recalculava tudo a cada tick, o que fazia com que PCs menos potentes travassem durante movimentos intensos no mercado.
- Desenho impreciso: Muitas vezes, as quebras do ZigZag pareciam "flutuar" sem uma ligação clara aos máximos e mínimos das barras, quando na verdade o ZigZag deveria mostrar exatamente esses pontos no gráfico.
- Problemas ao retroceder no histórico: O ZigZag original tinha dificuldades ao tentar voltar no histórico, desenhando sem uma ligação visual ao gráfico.
A boa notícia é que esta nova versão do ZigZag resolveu todas essas desvantagens. Agora, apenas os últimos três segmentos do ZigZag são recalculados, e isso acontece somente quando os preços ultrapassam a parte calculada da barra zero. Em outras palavras, isso ocorre quando o mínimo ou o máximo da barra zero é zerado, quando uma nova barra aparece ou durante o upload do histórico.
Cada um dos três ZigZags utiliza dois buffers: um para os máximos e outro para os mínimos. Isso possibilita a exibição de máximos e mínimos em uma única barra. Existem dois buffers livres que podem ser utilizados para adicionar um quarto segmento de código, o que pode ser uma ótima oportunidade de aprendizado para quem está iniciando na programação MQL4. Ou, se preferir, os buffers vazios podem ser usados para outras finalidades, caso o ZigZag seja integrado em sistemas desenvolvidos.
A cálculo e o desenho dos ZigZags de períodos maiores são feitos sem utilizar a função icustom(). Para fins de automação, podemos descartar os buffers do indicador. Isso permite calcular os ZigZags para todos os períodos simultaneamente e também para qualquer número de símbolos, desde que haja memória RAM suficiente. Essa abordagem permite, por exemplo, a busca de padrões (como o Gartley e outros) não apenas nos períodos atuais, mas em qualquer período escolhido e em múltiplos períodos ao mesmo tempo.
Parâmetros do MultiZigZag
A maioria dos parâmetros externos são variáveis do tipo string. Os parâmetros, separados por vírgulas, são escritos em cada variável string para cada ZigZag. O primeiro dígito refere-se ao primeiro ZigZag, o segundo ao segundo e o terceiro ao terceiro, todos separados por vírgulas. Os parâmetros ExtDepth, ExtDeviation e ExtBackstep são os parâmetros padrão do ZigZag. Se você definir ExtDepth=0, o ZigZag correspondente não será exibido.
ExtMaxBar - o número de barras que o ZigZag será calculado. GrossPeriod - os períodos dos gráficos em minutos dos quais os dados serão extraídos para o cálculo do ZigZag. Se você especificar 0, o ZigZag será calculado no período atual.
Você pode especificar os seguintes valores: 0-1-5-15-30-60-240-1440-10080-43200.
ExtReCalculate - o número de extremidades do ZigZag que serão recalculadas em tempo real, começando de 0. Isso é utilizado para ZigZags de períodos maiores. É recomendado não alterar este parâmetro.
Os ZigZags são exibidos de H1-H4-D1 por padrão. Eles serão exibidos a partir do gráfico de 1 minuto até o gráfico diário. Apenas um ZigZag, que é desenhado com dados do período D1, será exibido no gráfico diário. Apenas os ZigZags baseados em períodos maiores ou no período atual são desenhados.
No exemplo da imagem: o ZigZag de H1 é desenhado na cor Aqua, o de H4 em Vermelho e o de D1 em Amarelo.

Publicações relacionadas
- Calendário Econômico: Monitoramento e Cache para Testes de Estratégia no MetaTrader 5
- EURX: O Índice do Euro para MetaTrader 4 - Como Utilizar
- Índice de Swing de Acumulação (ASI) - O Indicador Essencial para MetaTrader 5
- Índice de Caminhada Aleatória: Um Indicador Essencial para MetaTrader 5
- Índice de Volatilidade Chaikin com Seleção de Algoritmo de Suavização para MetaTrader 5