Indicadores: ATR ZigZag

 

ATR ZigZag:

Implementação do ZigZag baseado no ATR.

ATR ZigZag

Autor: Andre Enger

 

Acho que entendi que o parâmetro "Min bar period before directional change" permite uma mudança de direção após esse período.

Por exemplo, se o parâmetro estiver definido como 3, a distância mínima entre um pico e um vale deve ser de 3 velas (ou mais). Mas, como vi, isso não é verdade (veja a figura). Então, gostaria de saber qual é o efeito desse parâmetro.

ATR ZigZag


Também não entendo qual é o efeito do parâmetro "Max bar period before directional change" (Período máximo da barra antes da mudança de direção).

 
Petr Nosek:

Pensei ter entendido que o parâmetro "Min bar period before directional change" permite uma mudança de direção após esse período.

Por exemplo, se o parâmetro for definido como 3, a distância mínima entre um pico e um vale deve ser de 3 velas (ou mais). Mas, como vi, isso não é verdade (veja a figura). Então, eu gostaria de saber qual é o efeito desse parâmetro.


Também não entendo qual é o efeito do parâmetro "Max bar period before directional change" (Período máximo da barra antes da mudança de direção).

Obrigado, essa é uma boa pergunta!

Como diz a descrição, o acionador de tempo é secundário ao ATR e deve ser considerado como uma restrição "suave". Um dos principais objetivos do indicador também é garantir que os picos e vales sejam mínimos e máximos de preços reais, o que tem precedência como uma restrição "rígida". Portanto, na sua imagem referente ao segmento curto no meio, se o ziguezague colocasse o vale na próxima barra, esse não seria o menor preço nesse segmento, seria?

O que quero dizer com secundário é que o período mínimo diz ao indicador que ele "não deve" mudar se a duração do segmento for menor que isso, apesar de o acionador ATR dizer que ele "deve". O período máximo informa ao indicador que ele "deve" mudar (independentemente de o ATR não ter sido acionado) se houver tantas barras desde que um novo topo/base foi encontrado. Sempre que uma tendência continuar subindo ou descendo, esse período será redefinido para 0, mas, quando for acionado, ele pesquisará o segmento da última alta/baixa em busca de seu preço mínimo/máximo como um extremo na direção oposta e inserirá um segmento e uma mudança de tendência como tal.

 
Andre Enger:

Obrigado, essa é uma boa pergunta!

Conforme consta na descrição, o acionador de tempo é secundário ao ATR e deve ser considerado como uma restrição "suave". Um dos principais objetivos do indicador também é garantir que os picos e vales sejam mínimos e máximos de preços reais, o que tem precedência como uma restrição "rígida". Portanto, na sua imagem referente ao segmento curto no meio, se o ziguezague colocasse o vale na próxima barra, esse não seria o menor preço nesse segmento, seria?

O que quero dizer com secundário é que o período mínimo diz ao indicador que ele "não deve" mudar se a duração do segmento for menor que isso, apesar de o acionador ATR dizer que ele "deve". O período máximo informa ao indicador que ele "deve" mudar (independentemente de o ATR não ter sido acionado) se houver tantas barras desde que um novo topo/base foi encontrado. Sempre que uma tendência continuar subindo ou descendo, esse período será redefinido para 0, mas, quando for acionado, ele procurará o segmento da última alta/baixa para seu preço mínimo/máximo como um extremo na direção oposta e inserirá um segmento e uma mudança de tendência como tal.

Obrigado por sua explicação. Não foi fácil entender seu "não deveria", "deveria", "deve", "precisa" e assim por diante. Tive que ler várias vezes, mas agora espero ter entendido. O acionador principal é o ATR, mas se esse acionador ocorrer dentro do "Período mínimo", ele não será levado em consideração (temporariamente) e o indicador aguardará o novo extremo. Mas se o novo extremo não ocorrer dentro do "Período máximo" (uma tendência plana), o indicador encontrará a máxima/mínima após a última oscilação confirmada e essa máxima/mínima será uma nova oscilação.

 
Petr Nosek:

Obrigado por sua explicação. Não foi fácil entender seus "shouldn't", "should", "shall", "must" e assim por diante. Tive que ler várias vezes, mas agora espero ter entendido. O acionador principal é o ATR, mas se esse acionador ocorrer dentro do "Período mínimo", ele não será levado em consideração (temporariamente) e o indicador aguardará o novo extremo. Mas se o novo extremo não ocorrer dentro do "período máximo" (uma tendência plana), o indicador encontrará a máxima/mínima após a última oscilação confirmada e essa máxima/mínima será uma nova oscilação.

Isso está correto e é o que eu acho que aconteceu na imagem. Meus termos também encontrados no código são:

  • Não deve mudar: houve menos de "Período mínimo" desde que uma máxima mais alta ou uma mínima mais baixa foi encontrada
  • Deveria mudar: a duração de um movimento de contra-tendência é maior do que o limite ATR
  • Deve mudar: houve mais do que o "Período máximo" desde que foi encontrada uma alta mais alta ou uma baixa mais baixa
  • Deve mudar: a duração de um movimento de contra-tendência é maior do que o ponto inicial da tendência

Se ambos "devem e NÃO devem", a tendência é alterada. Alternativamente, se "deve ou precisa", a tendência é alterada de uma forma que poderia anular as restrições de ATR/tempo.

A opção "pode mudar" é menos importante, mas garante que uma mudança de tendência pelo acionador do ATR só ocorra se a barra mais recente for o extremo em um movimento de contra-tendência, e não apenas porque o limite do ATR se tornou menor com o passar do tempo.

Além disso, embora eu diga "tendência" e "contra-tendência" neste comentário, isso significa a direção atual do ziguezague, e não qualquer tendência que ele acompanhe no mercado.
 
Os dados nos pontos altos e baixos são mostrados O ZigZag não separa os pontos altos e baixos!
 
Olá, Prezado


Se quisermos considerar apenas a condição ATR no indicador ATRZigZag, podemos considerar MinPeriod=0 e MaxPeriod=0?


Obrigado pela atenção

 
Olá,

Por favor, prepare também a versão mq4.

 
Obrigado por isso. Eu estava procurando um indicador de ziguezague baseado em ATR para desenhar ziguezagues de uma forma que as pessoas percebessem. E esse indicador é muito bom quando altero as configurações de acordo com o período de tempo. Acabei de adicionar a funcionalidade para ignorar a configuração de barra mínima quando a última defasagem for formada por pelo menos 50% da defasagem anterior. Então, ele está formando a defasagem mesmo que ela seja formada em uma ou duas barras. Para mim, é muito melhor assim: //--- Calcular as defasagens double previousLag = _lastDirection ? (ExtPeaksBuffer[_lastIndex] - low[_lastIndex2]) : (high[_lastIndex2] - ExtTroughsBuffer[_lastIndex]); double currentLag = _lastDirection ? (ExtPeaksBuffer[_lastIndex] - low[bar]) : (high[bar] - ExtTroughsBuffer[_lastIndex]); //--- Condições bool shouldntChange = (bar - _lastIndex < MinPeriod) && (currentLag < 0,5 * previousLag);