Average True Range (atr)

L’Average True Range (ATR) mesure l’amplitude typique des variations récentes d’un marché, sans en indiquer la direction. Il produit une série non négative exprimée dans l’unité du prix. Une valeur élevée correspond à des mouvements récents de grande amplitude ; une valeur faible à des mouvements plus resserrés. La série peut atteindre zéro, mais ne devient jamais négative.

L’amplitude de chaque bougie est mesurée par le True Range, qui tient compte à la fois de l’écart entre high et low et des éventuels sauts par rapport à la clôture précédente. Ces amplitudes sont ensuite lissées récursivement selon la méthode de Wilder ; length règle la vitesse à laquelle les nouvelles valeurs influencent la série. L’ATR exprime ainsi une distance de prix caractéristique à chaque bougie, à lire dans l’unité et à l’échelle du marché étudié.

Déclaration du bloc

Une stratégie peut contenir plusieurs blocs [[atr]]. Chaque bloc [[atr]] produit une série d’ATR distincte, identifiée par la valeur de son champ id.

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

Exemples

Configuration minimale

Ce bloc utilise la longueur ATR par défaut 14 et s’appuie sur les prix high, low et close du symbole et du timeframe principaux définis dans [backtest].

[[atr]]
id = "atr"

Configuration fixe personnalisée

Ce bloc utilise une valeur personnalisée pour length.

[[atr]]
id     = "atr"
length = 18

Recherche de la longueur optimale

Ce bloc explore une plage de valeurs pour length afin d’identifier la longueur la plus performante.

[[atr]]
id           = "atr"
length.start = 10
length.stop  = 20

Filtre de volatilité adaptatif

Cet exemple compare l’ATR courant à sa propre moyenne récente pour repérer les moments où la volatilité dépasse son niveau habituel. atr_baseline est une moyenne mobile simple de atr sur 100 bougies : elle représente la volatilité de référence des dernières bougies. atr_ratio_min fixe de combien l’ATR doit dépasser cette référence pour que la condition se déclenche.

La condition atr / atr_baseline > atr_ratio_min est donc vraie lorsque l’ATR vaut plus de atr_ratio_min fois sa référence : avec 1.1, l’ATR doit être au moins 10 % au-dessus de sa moyenne ; avec 1.8, au moins 80 % au-dessus. La grille 1.1 à 1.8 explore ces seuils. Un seuil proche de 1.0 laisse passer la plupart des bougies ; un seuil plus élevé ne retient que les phases nettement plus volatiles que la moyenne récente.

[[constant]]
id    = "atr_ratio_min"
start = 1.1
stop  = 1.8
step  = 0.1

[[atr]]
id = "atr"

[[ma]]
id     = "atr_baseline"
source = "atr"
type   = "sma"
length = 100

[[condition]]
id            = "volatility_filter"
condition     = "atr / atr_baseline > atr_ratio_min"
next_block_id = "..."

Symbole et timeframe dédiés

Ce bloc ATR 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.

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

Paramètres

ParamètreDescription
id
 Texte
 Obligatoire
Nom unique utilisé pour identifier la série ATR.
length
 Entier
 Optionnel
Période de calcul de l’ATR, doit être ≥ 1 lorsqu’elle est renseignée.
Si length est omis, la valeur par défaut est 14.

Usage :
• Fixe : length = valeur
• Grille :
 – length.start = valeur_minimale
 – length.stop = valeur_maximale
 – length.step = valeur (optionnel, par défaut 1)
symbol
 Texte
 ou Tableau
 Optionnel
Symbole de marché à partir duquel l’ATR 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

Vous pouvez utiliser directement les identifiants ci‑dessous dans vos expressions. Le bloc ATR expose une série numérique et sa longueur, ainsi que les sources d’entrée, le symbole et le timeframe.

Supposons le bloc configuré ainsi :

[[atr]]
id = "atr"

Alors :

VariableDescription
atr ou atr[0]
Décimal
Valeur actuelle de l’ATR.
atr[n]
Décimal
Valeur de l’ATR il y a n bougies.
atr.length
Décimal
Longueur utilisée.
atr.high_source
atr.low_source
atr.close_source
Texte
Nom de la série d’entrée high.
Nom de la série d’entrée low.
Nom de la série d’entrée close.
atr.symbol
Texte
Symbole de marché utilisé.
atr.timeframe
Texte
Timeframe utilisé.

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.