Como o ADX é calculado?

Aprenda como o ADX é calculado usando as fórmulas e entradas principais.

Como o ADX é calculado?

Resposta direta: o cálculo do ADX em uma cadeia

O ADX (Índice de Movimento Direcional Médio) é construído em camadas a partir das mudanças de preço: (1) calcule o movimento direcional e o true range para cada período, (2) suavize essas séries, (3) calcule os indicadores direcionais (+DI e −DI), (4) calcule o DX a partir da relação entre eles e (5) suavize o DX para obter o ADX.

Uma definição comum e padrão usa um comprimento de lookback frequentemente escrito como n (frequentemente 14, mas o método suporta outros valores). Os valores do ADX dependem do n escolhido e da regra de suavização usada pela implementação.

Mecanismo: definições e fórmulas passo a passo

Para descrever o cálculo sem assumir dados ao vivo, suponha que você tenha uma sequência de candles/barras ordenados por tempo. Para cada barra t, você precisa de sua máxima, mínima e fechamento (ou pelo menos máxima/mínima/fechamento conforme definido abaixo).

1) Calcule o True Range (TR)

O True Range captura a magnitude do movimento, incluindo gaps. Para a barra t em relação a t−1:

  • TR(t) = máx( Máxima(t) − Mínima(t), |Máxima(t) − Fechamento(t−1)|, |Mínima(t) − Fechamento(t−1)| )

Esta definição torna o TR maior quando o intervalo atual é amplo ou quando o preço abre gap através do fechamento anterior.

2) Calcule o movimento direcional: +DM e −DM

O movimento direcional separa os movimentos de alta dos movimentos de baixa:

  • MovimentoAlta(t) = Máxima(t) − Máxima(t−1)
  • MovimentoBaixa(t) = Mínima(t−1) − Mínima(t)

Uma regra típica é:

  • +DM(t) = MovimentoAlta(t) se MovimentoAlta(t) > MovimentoBaixa(t) e MovimentoAlta(t) > 0, caso contrário 0
  • −DM(t) = MovimentoBaixa(t) se MovimentoBaixa(t) > MovimentoAlta(t) e MovimentoBaixa(t) > 0, caso contrário 0

Essa estrutura “um ou outro” garante que apenas a direção dominante contribua em cada etapa.

3) Suavize TR, +DM e −DM

O ADX não é calculado a partir do TR e DM brutos em cada barra; ele usa uma etapa de suavização. Muitas implementações usam a suavização estilo Wilder (uma abordagem comum), que é equivalente a uma média móvel recursiva específica.

Deixe TRSuavizado(t) ser o TR suavizado e similarmente +DMSuavizado(t) e −DMSuavizado(t).

Com a suavização estilo Wilder para o período n, a recursão normalmente se parece com:

  • TRSuavizado(t) = TRSuavizado(t−1) − (TRSuavizado(t−1) / n) + TR(t)
  • +DMSuavizado(t) = +DMSuavizado(t−1) − (+DMSuavizado(t−1) / n) + +DM(t)
  • −DMSuavizado(t) = −DMSuavizado(t−1) − (−DMSuavizado(t−1) / n) + −DM(t)

A inicialização é importante: as implementações geralmente iniciam a série suavizada após barras suficientes para estabelecer uma soma ou média inicial ao longo de n períodos.

4) Calcule +DI e −DI

Os indicadores direcionais convertem o movimento direcional suavizado em valores relativos ao TR suavizado:

  • +DI(t) = 100 × +DMSuavizado(t) / TRSuavizado(t)
  • −DI(t) = 100 × −DMSuavizado(t) / TRSuavizado(t)

5) Calcule o DX (Índice Direcional)

O DX descreve quão fortemente uma direção domina a outra:

  • DX(t) = 100 × |+DI(t) − −DI(t)| / (+DI(t) + −DI(t))

Se +DI(t) + −DI(t) for zero (possível com movimento plano ou sem direção e certas condições de dados/início), uma implementação deve lidar com a divisão por zero.

6) Suavize o DX para obter o ADX

Finalmente, o ADX é uma média móvel suavizada do DX ao longo do período n (novamente, comumente estilo Wilder):

  • ADX(t) = média suavizada de DX(t) ao longo do comprimento escolhido n

Na prática, o primeiro valor do ADX é produzido após uma região de aquecimento (frequentemente após acumular pontos de DX suficientes). Diferentes plataformas podem escolher convenções de inicialização ligeiramente diferentes, o que leva a pequenas discrepâncias.

Evidência via um pequeno exemplo prático (com suposições explícitas)

Sem dados em tempo real, um exemplo numérico completo seria arbitrário. Em vez disso, aqui está um modelo de cálculo compacto que você pode aplicar às suas próprias barras OHLC.

Suponha que você tenha barras consecutivas e selecione um período n. Para cada barra a partir da segunda barra (porque t−1 é necessário):

  1. Calcule TR(t) a partir de Máxima(t), Mínima(t) e Fechamento(t−1).
  2. Calcule +DM(t) e −DM(t) a partir das diferenças nas máximas e mínimas.
  3. Construa os valores suavizados TRSuavizado(t), +DMSuavizado(t), −DMSuavizado(t) usando a regra de suavização escolhida e a inicialização correta.
  4. Calcule +DI(t) e −DI(t).
  5. Calcule DX(t).
  6. Suavize DX(t) para formar ADX(t).

Suposição material a declarar quando você verificar de forma independente: sua fonte de dados (quais valores OHLC exatamente), seu n escolhido e sua regra de suavização devem corresponder à implementação que você está verificando. Mesmo que as fórmulas sejam “padrão”, os detalhes de aquecimento e suavização podem diferir.

Se você quiser confirmar que dois sistemas calculam o mesmo ADX, exporte a mesma série OHLC, aplique o mesmo n, use as mesmas definições de TR/DM e verifique as séries intermediárias (+DM/−DM, +DI/−DI, DX) antes de comparar o ADX final.

Limitações e modos de falha que você deve considerar

O ADX é frequentemente descrito como uma medida de “força da tendência”, mas essa interpretação tem limites. Os principais problemas vêm da sensibilidade aos dados e de como o movimento direcional se comporta.

1) O ADX depende da suavização e da inicialização

Como o ADX usa TR/DM suavizados e DX suavizado, os resultados podem variar quando:

  • você altera n,
  • você altera o método de suavização (ou convenção de inicialização), ou
  • sua plataforma lida com casos extremos de forma diferente (por exemplo, barras iniciais, divisão por zero).

Este é um modo de falha chave ao comparar números entre provedores.

2) Valores altos não garantem vantagem direcional

O ADX é calculado a partir da magnitude da dominância direcional, não de uma direção garantida. Ele pode estar relativamente elevado quando uma direção domina consistentemente, mesmo que o ambiente mais amplo mude depois.

Isso é importante porque uma mudança posterior no movimento direcional pode tornar o comportamento anterior do ADX menos informativo.

3) Mercados instáveis ou laterais podem produzir leituras de força enganosas

As definições de movimento direcional ainda podem criar dominância repetida em movimentos pequenos e irregulares. Em algumas condições “laterais, mas voláteis”, o ADX pode subir mesmo sem haver uma estrutura de tendência sustentada e estável.

Isso significa que o ADX é melhor tratado como um indicador das características do movimento, não como uma regra de decisão isolada.

Verificação: como verificar independentemente seu cálculo do ADX

Para verificar o ADX por conta própria usando a cadeia de fórmulas acima:

  1. Escolha um n específico e registre-o.
  2. Use um conjunto de dados OHLC consistente e confirme que você tem Máxima, Mínima, Fechamento alinhados por tempo.
  3. Calcule TR, +DM e −DM exatamente com a mesma lógica condicional.
  4. Aplique a mesma regra de suavização e inicialização usada pela sua referência.
  5. Calcule +DI, −DI, DX e então suavize o DX no ADX.
  6. Compare primeiro as saídas intermediárias; se essas corresponderem, o ADX final muito provavelmente será consistente.
Negociar moedas e CFDs envolve risco substancial. As informações da FoxiForex são educativas e não constituem aconselhamento financeiro pessoal. Conteúdo patrocinado é identificado claramente.