MetaTrader 5 / Indicadores

ZigZag Profissional - indicador para MetaTrader 5

10287
(48)

Atenção! Esta versão do indicador ZigZag se baseia no código ZigZag, e foi publicado aqui com a permissão de seu autor, PPC. Eu testei esta versão e corrigi um erro do algoritmo.

Este código é a versão em MQL5 do indicador Zigzag para o MetaTrader 4.

Atenção! A biblioteca AlexSTAL_OutsideBar.mqh deve estar localizada na pasta ..\MQL5\Include\ do cliente terminal MetaTrader 5.

É só isso?

Eu acho que o ZigZag é algo como uma compressão do gráfico de preço. O ZigZag pode ser calculado usando o preço da barra (por exemplo, Fechamento do preço) ou máxima/mínima dos preços da barra (o método mais comum usado).

Ao trabalhar com o ZigZag padrão, proposto pela MetaQuotes, eu encontrei alguns erros. O problema principal é que o ZigZag padrão não procede os casos de uma barra fora.

Em 2007 Rashid Umarov (Rosh) publicou o código Zigzag2 R com processamento de barras para fora (estilo DRAW_ZIGZAG em vez de DRAW_SECTION).

Vamos definir as características da implementação "correta" do ZigZag:

  • As máximas e mínimas devem ser rigorosamente alternadas;
  • A máxima deve ser maior (ou igual) que a quantidade de todas as barras do lado direito até a próxima mínima (oposto);
  • A mínima deve ser menor (ou igual) que a quantidade de todas as barras do lado esquerdo até a próxima máxima (oposto).

Vamos considerar o uso do exemplo (EURUSD, H1, 2006, Dezembro 8-13). Aqui temos dois casos de barra para fora. O ZigZag típico não consegue construir a imagem "correta".

Figura 1. ZigZag típico com os parâmetros de entrada [12;5;3] e [12;0;0]

Figura 1. ZigZag típico com os parâmetros de entrada [12;5;3] e [12;0;0]

Figura 2. Zigzag2 R com os parâmetros de entrada [12;5;3]

Figura 2. Zigzag2 R com os parâmetros de entrada [12;5;3]


Figura 3. Zigzag2 R com os parâmetros de entrada [12;0;0]

Figura 3. Zigzag2 R com os parâmetros de entrada [12;0;0]

A primeira vista, a construção correta é apresentada na Figura 3, mas aqui vão algumas características:

  1. Neste caso tem-se uma construção correta por causa dos parâmetros de entrada, mas, geralmente, o algoritmo deve trabalhar com quaisquer parâmetros.
  2. A barra do lado de fora do lado esquerdo não está correta, devido a ordem de formação da barra máxima/mínima:


Os segmentos de ZigZag devem ser construídos da seguinte maneira.

Eu testei muitos casos dos seguintes algoritmos de ZigZag: ZigZag MT3, ZigZag, Zigzag R, Zigzag2 R, ZigZag_NK, ZigZag_ZUP89_nen, ZigZag_new_nen4, CZigZag, Swing_ZZ_1, DT_ZZ_nen, ZigZag_Talex, Reverse_ZZ, Points_ZZ_1, i_MF_Fractal_ZZ_3in1, ang_Amp_ZZ, ZigzagFr_v1, NonLagZigZag_v2, ZZ_FF_v3, ZigZag Ensign, ZigZag tauber, SQZZ Товаровед, ZZ_2L_nen wellx, Channel ZZ, Azzx_larryzz_3_0, RPoint, RPoint-m v2, ZigZagTF. Mas nenhum deles resolveu o problema corretamente.


Aqui encontramos as figuras com este indicador:

Figura 4. ZigZag Profissional com os parâmetros de entrada [12;0]

Figura 4. ZigZag Profissional com os parâmetros de entrada [12;0]

Figura 5. ZigZag Profissional com os parâmetros de entrada [23;0]

Figura 5. ZigZag Profissional com os parâmetros de entrada [23;0]


Algumas características desta versão:

  • algoritmo de uma passagem
  • ele recalcula e redesenha apenas o último segmento (o segmento não pode ser cancelado, exceto se houver atualizações no histórico)
  • ele tem o algoritmo de otimização para os cálculos dentro da barra (ele não usa o recálculo sobre o tick, se o preço mudou dentro da barra 0 (incompleto) a mudança é menor do que a limiar definida pelo parâmetro de entrada MinMotion)
  • Ele posusi dois algoritmos para ordenar a formação de máximas/mínimas: usando o tipo da barra (rápido, mas não é preciso), usando os dados de um tempo gráfico menor (ele precisa do histórico, você precisa verificar a presença e a exatidão ou é necessário modificar a biblioteca OutsideBar)
A versão ProExtra não foi publicada, pois a exatidão das cotações do MetaTrader 5 não foram verificadas.


Aqui estão alguns exemplos adicionais de construções incorretas do ZigZag:

Figura 6. EURUSD, H1, 29 Novembro - 7 Dezembro. (Linha vermelha: ZigZag com os parâmetros de entrada [7;0;0]. Linha azul: Zigzag2 R com os parâmetros de entrada [7;0;0].)

Figura 6. EURUSD, H1, 29 Novembro - 7 Dezembro. (Linha vermelha: ZigZag com os parâmetros de entrada [7;0;0]. Linha azul: Zigzag2 R com parâmetros de entrada [7;0;0].)

Figura 7. EURUSD, H1, 2010, 29 Novembro - 7 Dezembro. Construção correta dos segmentos de ZigZag.

Figura 7. EURUSD, H1, 2010, 29 Novembro - 7 Dezembro. Construção correta dos segmentos de ZigZag.


Conclusão

Infelizmente esta versão não é perfeita, mas eu estou trabalhando nisso.

Devido ao algoritmo de canal (iHighest / iLowest), às vezes ele pula as máximas.

Favor me informar sobre os erros e as características deste indicador.

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/263