Average Directional Index (adx)

L’Average Directional Index (ADX) mesure à quel point une direction domine les mouvements récents, sans indiquer si cette direction est haussière ou baissière. Il produit une série comprise entre 0 et 100. Une valeur élevée correspond à une nette dominance directionnelle ; une valeur faible à des mouvements haussiers et baissiers qui se compensent davantage. Un même niveau d’ADX peut donc décrire aussi bien une hausse qu’une baisse.

L’indicateur compare une composante haussière (+DI) et une composante baissière (-DI), toutes deux rapportées à l’amplitude réelle des mouvements. di_length définit l’horizon sur lequel ces composantes sont lissées, puis adx_length lisse leur contraste relatif pour former l’ADX. La sortie exprime ainsi le degré de structure directionnelle du mouvement, indépendamment de son sens.

Déclaration du bloc

Une stratégie peut contenir plusieurs blocs [[adx]]. Chaque bloc produit une série numérique qui est la valeur de l’ADX.

Le bloc [[adx]] ne possède pas de paramètre source car l’ADX est toujours calculé à partir des prix high, low et close des bougies.

Exemples

Configuration minimale

Ce bloc utilise les longueurs par défaut de l’ADX : 14 pour di_length et 14 pour adx_length.

[[adx]]
id = "adx"

Configuration fixe personnalisée

Ce bloc utilise des valeurs personnalisées pour di_length et adx_length.

[[adx]]
id         = "adx"
di_length  = 15
adx_length = 16

Recherche des longueurs optimales

Ce bloc explore des plages de valeurs pour di_length et adx_length afin d’identifier la combinaison la plus performante.

[[adx]]
id               = "adx"
di_length.start  = 10
di_length.stop   = 20
adx_length.start = 10
adx_length.stop  = 20

Filtre de tendance avec seuil

Cet exemple utilise l’ADX comme filtre d’entrée. Le bloc [[constant]] définit un seuil nommé adx_threshold, dont la valeur varie de 20.0 à 30.0 pendant le grid search : un backtest est exécuté pour chaque valeur de la plage. A chaque bougie, le bloc [[condition]] compare l’ADX à ce seuil et ne laisse la stratégie passer au bloc suivant que lorsque adx > adx_threshold, c’est-à-dire lorsque le marché est suffisamment en tendance. Le classement des résultats montre ensuite quelle valeur de seuil donne les meilleures performances.

[[adx]]
id = "adx"

[[constant]]
id    = "adx_threshold"
start = 20.0
stop  = 30.0

[[condition]]
id            = "trend_filter"
condition     = "adx > adx_threshold"
next_block_id = "..."

Symbole et timeframe dédiés

Ce bloc ADX utilise les bougies journalières de BINANCE:ETHUSDT. Les prix high, low et close sont extraits de ce symbole et de ce timeframe, indépendamment du symbole et du timeframe principaux définis dans [backtest]. Voir la page Exchanges, Symboles et Timeframes pour les règles d’alignement.

[[adx]]
id        = "adx"
symbol    = "BINANCE:ETHUSDT"
timeframe = "D"

Paramètres

ParamètreDescription
id
 Texte
 Obligatoire
Nom unique identifiant la série ADX ; le bloc expose une série numérique portant cet identifiant.
di_length
 Entier
 Optionnel
Nombre de bougies sur lequel les poussées haussières et baissières sont moyennées pour obtenir +DI et -DI ; doit être ≥ 1 lorsqu’il est renseigné.
Si di_length est omis, la valeur par défaut est 14.

Usage :
• Fixe : di_length = valeur
• Grille :
 – di_length.start = valeur_minimale
 – di_length.stop = valeur_maximale
 – di_length.step = valeur (optionnel, par défaut 1)
adx_length
 Entier
 Optionnel
Nombre de bougies sur lequel l’écart entre +DI et -DI est lissé pour donner la valeur de l’ADX ; doit être ≥ 1 lorsqu’il est renseigné.
Si adx_length est omis, la valeur par défaut est 14.

Usage :
• Fixe : adx_length = valeur
• Grille :
 – adx_length.start = valeur_minimale
 – adx_length.stop = valeur_maximale
 – adx_length.step = valeur (optionnel, par défaut 1)
symbol
 Texte
 ou Tableau
 Optionnel
Symbole de marché à partir duquel l’ADX lit les bougies (prix high, low, close). Pour le format et les règles d’alignement, voir le guide Exchanges, Symboles et Timeframes.
timeframe
 Texte
 ou Tableau
 Optionnel
Timeframe sur lequel cet indicateur est calculé.
Si timeframe est omis, le calcul se fait sur le timeframe principal de la grille défini dans [backtest].
Pour les formats acceptés et les règles d’alignement entre timeframes, voir Exchanges, Symboles et Timeframes.

Variables disponibles

Le bloc ADX expose la série ADX et, en lecture seule, ses longueurs de calcul, ses sources d’entrée, son symbole et son timeframe.

Supposons le bloc configuré ainsi :

[[adx]]
id = "adx"

Alors :

VariableDescription
adx ou adx[0]
Décimal
Valeur actuelle de l’ADX.
adx[n]
Décimal
Valeur de l’ADX il y a n bougies.
adx.di_length
Décimal
Fenêtre de calcul DI utilisée pour adx.
adx.adx_length
Décimal
Fenêtre de lissage de l’ADX utilisée pour adx.
adx.high_source
adx.low_source
adx.close_source
Texte
Nom des séries d’entrée high, low et close utilisées par la série ADX.
adx.symbol
Texte
Symbole de marché utilisé pour la série ADX.
adx.timeframe
Texte
Timeframe utilisé pour la série ADX.

Notes

  • Les variables numériques se combinent librement (arithmétique, comparaisons, opérateurs logiques).
  • Les variables textuelles sont des chaînes destinées aux comparaisons d’égalité/inégalité uniquement.