Come si calcola l'ADX?

Scopri come viene calcolato l'ADX utilizzando le formule di base e gli input.

Come si calcola l’ADX?

Risposta diretta: il calcolo dell’ADX in un unico flusso

L’ADX (Average Directional Index) è costruito a strati a partire dai cambiamenti dei prezzi: (1) calcolare il movimento direzionale e il range vero per ogni periodo, (2) smussare queste serie, (3) calcolare gli indicatori direzionali (+DI e −DI), (4) calcolare il DX dalla loro relazione e (5) smussare il DX per ottenere l’ADX.

Una definizione comune e standard utilizza una lunghezza di retrovisione spesso indicata come n (frequentemente 14, ma il metodo supporta altri valori). I valori dell’ADX dipendono dal valore scelto di n e dalla regola di smoothing utilizzata nell’implementazione.

Meccanismo: definizioni e formule passo dopo passo

Per descrivere il calcolo senza presupporre dati in tempo reale, si supponga di avere una sequenza di candele/blocchi ordinate per tempo. Per ogni blocco t, sono necessari il suo massimo, minimo e chiusura (o almeno massimo/minimo/chiusura come definiti di seguito).

1) Calcolo del Range Vero (TR)

Il Range Vero cattura l’entità del movimento, inclusi i gap. Per il blocco t rispetto a t−1:

  • TR(t) = max( High(t) − Low(t), |High(t) − Close(t−1)|, |Low(t) − Close(t−1)| )

Questa definizione rende il TR più grande quando l’intervallo corrente è ampio o quando il prezzo presenta un gap rispetto alla chiusura precedente.

2) Calcolo del movimento direzionale: +DM e −DM

Il movimento direzionale separa i movimenti verso l’alto da quelli verso il basso:

  • UpMove(t) = High(t) − High(t−1)
  • DownMove(t) = Low(t−1) − Low(t)

Una regola tipica è:

  • +DM(t) = UpMove(t) se UpMove(t) > DownMove(t) e UpMove(t) > 0, altrimenti 0
  • −DM(t) = DownMove(t) se DownMove(t) > UpMove(t) e DownMove(t) > 0, altrimenti 0

Questa struttura “o l’uno o l’altro” assicura che solo la direzione dominante contribuisca a ogni passo.

3) Smussamento di TR, +DM e −DM

L’ADX non viene calcolato dai valori grezzi di TR e DM per ogni blocco; utilizza uno step di smussamento. Molte implementazioni usano lo smussamento di tipo Wilder (un approccio comune), equivalente a una particolare media mobile ricorsiva.

Sia SmoothedTR(t) il TR smussato e analogamente Smoothed+DM(t) e Smoothed−DM(t).

Con lo smussamento di tipo Wilder per il periodo n, la ricorsione appare tipicamente così:

  • SmoothedTR(t) = SmoothedTR(t−1) − (SmoothedTR(t−1) / n) + TR(t)
  • Smoothed+DM(t) = Smoothed+DM(t−1) − (Smoothed+DM(t−1) / n) + +DM(t)
  • Smoothed−DM(t) = Smoothed−DM(t−1) − (Smoothed−DM(t−1) / n) + −DM(t)

L’inizializzazione è importante: le implementazioni di solito avviano la serie smussata dopo un numero sufficiente di blocchi per stabilire una somma o media iniziale su n periodi.

4) Calcolo di +DI e −DI

Gli indicatori direzionali convertono il movimento direzionale smussato in valori relativi al TR smussato:

  • +DI(t) = 100 × Smoothed+DM(t) / SmoothedTR(t)
  • −DI(t) = 100 × Smoothed−DM(t) / SmoothedTR(t)

5) Calcolo del DX (Indice Direzionale)

Il DX descrive quanto fortemente una direzione domina l’altra:

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

Se +DI(t) + −DI(t) è zero (possibile con movimenti piatti o senza direzione e certe condizioni iniziali), l’implementazione deve gestire la divisione per zero.

6) Smussamento del DX per ottenere l’ADX

Infine, l’ADX è una media mobile smussata del DX sul periodo n (ancora una volta, comunemente con lo stile Wilder):

  • ADX(t) = media smussata di DX(t) sul periodo scelto n

In pratica, il primo valore dell’ADX viene prodotto dopo una fase di avvio (spesso dopo aver accumulato un numero sufficiente di punti DX). Diverse piattaforme possono scegliere convenzioni di inizializzazione leggermente diverse, causando piccole discrepanze.

Esempio pratico ridotto (con assunzioni esplicite)

Senza dati in tempo reale, un esempio numerico completo sarebbe arbitrario. Invece, ecco un modello di calcolo compatto che si può applicare alle proprie barre OHLC.

Si supponga di avere barre consecutive e di aver scelto un periodo n. Per ogni barra a partire dalla seconda (poiché serve t−1):

  1. Calcolare TR(t) da High(t), Low(t) e Close(t−1).
  2. Calcolare +DM(t) e −DM(t) dalle differenze tra massimi e minimi.
  3. Costruire i valori smussati SmoothedTR(t), Smoothed+DM(t), Smoothed−DM(t) utilizzando la regola di smussamento scelta e l’inizializzazione corretta.
  4. Calcolare +DI(t) e −DI(t).
  5. Calcolare DX(t).
  6. Smussare DX(t) per formare ADX(t).

Assunzione materiale da dichiarare quando si verifica in modo indipendente: la propria fonte dati (esattamente quali valori OHLC), il valore n scelto e la regola di smussamento devono corrispondere all’implementazione che si sta verificando. Anche se le formule sono “standard”, i dettagli di avvio e smussamento possono differire.

Se si desidera confermare che due sistemi calcolino lo stesso ADX, esportare la stessa serie OHLC, applicare lo stesso n, utilizzare le stesse definizioni di TR/DM e verificare le serie intermedie (+DM/−DM, +DI/−DI, DX) prima di confrontare l’ADX finale.

Limitazioni e modi di errore da considerare

L’ADX è spesso descritto come una misura della “forza del trend”, ma questa interpretazione ha dei limiti. I principali problemi derivano dalla sensibilità ai dati e dal comportamento del movimento direzionale.

1) L’ADX dipende dallo smussamento e dall’inizializzazione

Poiché l’ADX utilizza TR/DM smussati e DX smussato, i risultati possono variare quando:

  • si cambia n,
  • si cambia il metodo di smussamento (o la convenzione di inizializzazione), oppure
  • la piattaforma gestisce diversamente i casi limite (es. barre iniziali, divisione per zero).

Questo è un modo di errore chiave quando si confrontano numeri tra diversi provider.

2) Valori alti non garantiscono un vantaggio direzionale

L’ADX viene calcolato in base all’entità del dominio direzionale, non da una direzione garantita. Può essere relativamente elevato quando una direzione domina costantemente, anche se l’ambiente generale cambia successivamente.

Questo è importante perché un successivo cambiamento nel movimento direzionale può rendere meno informativo il comportamento precedente dell’ADX.

3) Mercati laterali o volatili possono produrre letture fuorvianti della forza

Le definizioni di movimento direzionale possono comunque creare dominanze ripetute in piccoli movimenti irregolari. In alcune condizioni “laterali ma volatili”, l’ADX può aumentare anche in assenza di un trend sostenuto e stabile.

Ciò significa che l’ADX è meglio considerato come un indicatore delle caratteristiche del movimento, non come una regola decisionale autonoma.

Verifica: come controllare autonomamente il proprio calcolo dell’ADX

Per verificare l’ADX autonomamente utilizzando la catena di formule sopra:

  1. Scegliere un n specifico e registrarne il valore.
  2. Utilizzare un unico dataset OHLC coerente e confermare che High, Low, Close siano allineati temporalmente.
  3. Calcolare TR, +DM e −DM esattamente con la stessa logica condizionale.
  4. Applicare la stessa regola di smussamento e inizializzazione usata dal riferimento.
  5. Calcolare +DI, −DI, DX, quindi smussare il DX in ADX.
  6. Confrontare prima gli output intermedi; se questi corrispondono, l’ADX finale è molto probabilmente coerente.
Il trading su forex e CFD comporta rischi significativi. Le informazioni di FoxiForex sono educative e non costituiscono consulenza finanziaria personale. I contenuti sponsorizzati sono chiaramente indicati.