Como a Tendência ADX é Calculada
Resposta direta
“Tendência ADX” não é uma fórmula de marca única e fixa; a maioria das pessoas se refere ao Índice de Movimento Direcional Médio (ADX) e à sua construção a partir dos componentes de movimento direcional (DI). Em sua forma comum, o cálculo começa com as variações de preço, deriva os valores de movimento direcional (+DM e −DM), normaliza-os com o true range (TR), suaviza os resultados e, em seguida, converte os indicadores direcionais suavizados no valor do ADX (força da tendência).
Mecanismo e definição (os blocos de construção do cálculo)
Abaixo está um fluxo de trabalho padrão e autossuficiente no estilo ADX. O objetivo é calcular um número de força de tendência a partir dos dados de preço OHLC. O cálculo requer uma série temporal de preços (no mínimo: Alta e Baixa; o Fechamento é usado para calcular variações e variantes do TR).
1) Entradas e notação
Suponha que você tenha barras/velas indexadas pelo tempo t com pelo menos:
- Alta[t]
- Baixa[t]
- Fechamento[t]
Escolha um comprimento de lookback n (frequentemente chamado de “período”). Essa escolha afeta a força da suavização e a sensibilidade.
2) Movimento direcional: +DM e −DM
Para cada etapa t (começando após você ter a barra anterior t−1), calcule o movimento direcional a partir das variações nas máximas e mínimas:
- MovimentoParaCima = Alta[t] − Alta[t−1]
- MovimentoParaBaixo = Baixa[t−1] − Baixa[t]
Um conjunto comum de regras atribui:
- +DM = MovimentoParaCima se MovimentoParaCima > MovimentoParaBaixo e MovimentoParaCima > 0, caso contrário 0
- −DM = MovimentoParaBaixo se MovimentoParaBaixo > MovimentoParaCima e MovimentoParaBaixo > 0, caso contrário 0
Interpretação: apenas a direção dominante “vence” naquela barra, e o movimento negativo nessa direção é descartado.
3) True range: TR
O true range mede o quanto o preço se moveu, considerando os gaps entre os fechamentos. Uma definição comum é:
- TR = máx( Alta[t] − Baixa[t], abs(Alta[t] − Fechamento[t−1]), abs(Baixa[t] − Fechamento[t−1]) )
Interpretação: o TR é o denominador de normalização para o movimento direcional.
4) Suavize os componentes
O movimento direcional e o TR são tipicamente suavizados ao longo de n barras antes de serem transformados em índices. Uma abordagem amplamente utilizada é a suavização no estilo Wilder, definida recursivamente como:
- SuavizadoX[t] = SuavizadoX[t−1] − (SuavizadoX[t−1] / n) + X[t]
Onde X[t] é um dos +DM[t], −DM[t] ou TR[t], dependendo de qual série você está suavizando.
Detalhe importante: você deve definir o valor inicial de SuavizadoX para a primeira janela de cálculo (frequentemente a soma das primeiras n observações, dependendo da implementação exata da plataforma).
5) Converta em indicadores direcionais (+DI e −DI)
Após a suavização, calcule:
- +DI[t] = 100 × (Suavizado(+DM)[t] / Suavizado(TR)[t])
- −DI[t] = 100 × (Suavizado(−DM)[t] / Suavizado(TR)[t])
Os indicadores direcionais traduzem o movimento em uma “força direcional” normalizada e comparável.
6) Crie o DX e depois o ADX
Calcule o índice direcional (DX):
- DX[t] = 100 × abs(+DI[t] − −DI[t]) / (+DI[t] + −DI[t])
Em seguida, calcule o ADX usando outra etapa de suavização ao longo de n barras:
- ADX[t] = média suavizada do DX ao longo do período escolhido n
Em muitas implementações, o ADX inicial é uma média dos primeiros valores de DX disponíveis, seguida por suavização no estilo Wilder ou um método de suavização equivalente.
Resumo do que a “Tendência ADX” está medindo
O número ADX resultante tem a intenção de representar a “força da tendência” em vez da direção. Os indicadores direcionais (+DI e −DI) são separados e indicam a direção; o ADX resume o quão forte é o domínio direcional.
Evidência ou exemplo (um mini-fluxo de trabalho verificável)
Como os cálculos dependem de regras exatas e condições iniciais, é útil verificar o método com um conjunto de dados pequeno e consistente.
Premissas para este exemplo (para que você possa replicá-lo):
- Use as regras padrão de +DM/−DM descritas acima.
- Use a definição padrão de TR usando Alta, Baixa e Fechamento[t−1].
- Use o período n = 14.
- Use suavização no estilo Wilder.
Uma maneira prática de verificar de forma independente:
- Crie uma planilha com colunas para MovimentoParaCima, MovimentoParaBaixo, +DM, −DM, TR.
- Para a primeira janela de suavização, calcule os valores iniciais de Suavizado(+DM), Suavizado(−DM) e Suavizado(TR) conforme definido pelo seu método escolhido (comumente a soma dos primeiros n valores).
- Aplique a suavização de Wilder para frente, uma barra de cada vez.
- Calcule +DI e −DI a partir dos valores suavizados.
- Calcule o DX a partir da diferença e da soma de +DI e −DI.
- Suavize o DX para obter o ADX.
Se as saídas da sua planilha corresponderem à linha ADX de uma ferramenta (dentro das diferenças de arredondamento), você pode ter confiança de que está usando as mesmas regras subjacentes e a mesma inicialização.
Verificação cruzada opcional: inspecione se +DM e −DM se comportam de maneira sensata em barras onde as máximas sobem enquanto as mínimas caem (ou vice-versa). Se um lado dominar consistentemente, os indicadores direcionais devem refletir isso.
Limitações, riscos e modos de falha
1) Diferenças de implementação
Indicadores semelhantes ao ADX podem diferir devido a:
- Como os valores iniciais suavizados são semeados.
- A definição exata do TR (algumas plataformas lidam com gaps ou peculiaridades dos dados de forma ligeiramente diferente).
- Se a suavização é no estilo Wilder ou usa outro método de média.
- Se uma plataforma rotula uma variante como “Tendência ADX”.
Mesmo pequenas diferenças podem causar divergências perceptíveis.
2) Sensibilidade ao período n
Um n mais longo tipicamente suaviza mais fortemente, produzindo um ADX de movimento mais lento. Um n mais curto pode reagir rapidamente à volatilidade de curto prazo, potencialmente criando leituras instáveis. Isso não é uma questão de “melhor” ou “pior”; muda o que o número representa.
3) Denominadores de divisão por zero ou próximos de zero
O DX usa (+DI + −DI) no denominador. Se ambos os indicadores direcionais estiverem próximos de zero (por exemplo, em dados muito planos ou de baixa volatilidade), o DX pode ser instável ou indefinido, dependendo de como o software lida com zeros. O tratamento adequado requer regras explícitas.
4) Qualidade dos dados e barras ausentes
Se os dados OHLC tiverem intervalos ausentes, valores desatualizados ou construção de velas inconsistente, +DM, −DM e TR podem ser calculados a partir de premissas incorretas de adjacência (relações t−1). Isso pode produzir valores de ADX enganosos.
5) O comportamento do mercado não é constante
Mesmo com a matemática correta, o significado estatístico do ADX depende do regime. Cálculos históricos não garantem similaridade futura; o ADX é uma transformação do movimento de preço observado, não uma certeza sobre o que virá a seguir.
Verificação ou próxima pergunta
Para verificar de forma independente qualquer cálculo de “Tendência ADX” que você veja:
- Confirme qual variante exata de ADX é usada (período n, método de suavização, definição de TR, semeadura inicial).
- Recalcule pelo menos alguns pontos a partir dos dados OHLC brutos.
- Verifique se as séries intermediárias (+DM, −DM, TR, valores suavizados, +DI/−DI) correspondem às saídas da sua ferramenta.
Se quiser, diga-me qual plataforma ou convenção de fórmula você está usando (por exemplo, o período exato e se a suavização é no estilo Wilder). Então, as etapas de cálculo acima podem ser mapeadas com precisão para essa convenção, sem assumir nada sobre os dados atuais ou o comportamento do provedor.