Average True Range (atr)

[[atr]] mesure la volatilité d’un marché, c’est-à-dire l’amplitude moyenne des mouvements de prix sur une période donnée. Il est calculé à partir du True Range, qui tient compte à la fois de l’écart entre le plus haut et le plus bas de la bougie, et des gaps entre deux bougies consécutives.

L’ATR est ensuite lissé par une RMA (Running Moving Average, ou moyenne de Wilder). Vous obtenez ainsi une série qui suit les variations de volatilité tout en restant plus stable qu’une suite brute de True Range.

L’ATR ne mesure pas la direction du marché. Il s’utilise surtout comme outil de contexte, par exemple pour filtrer des phases de marché, adapter un stop ou comparer le niveau actuel de volatilité à son niveau récent.

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 utilise l’ATR comme filtre de volatilité. atr_baseline (SMA de atr) sert de référence, et atr_ratio_min définit le seuil à dépasser : la condition devient vraie quand atratr_baseline>atr_ratio_min. Les bornes 1.1 à 1.8 sont des points de départ à optimiser selon le symbole, le timeframe et la stratégie. Avec un seuil proche de 1.0, le filtre reste permissif (il laisse passer plus de signaux). Avec un seuil plus élevé, le filtre devient plus strict et ne retient que les phases de volatilité plus marquées.

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

[[atr]]
id = "atr"

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

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

Timeframe dédié

Ce bloc ATR utilise un timeframe journalier distinct. Les prix high, low et close sont extraits de ce timeframe (timeframe = "D"), et non du timeframe principal défini dans [backtest]. Voir la page Exchanges, Symboles et Timeframes pour les règles d’alignement entre ce timeframe et le timeframe principal.

[[atr]]
id        = "atr"
timeframe = "D"

Symbole spécifique

Ce bloc lit ses bougies sur le symbole spécifique BINANCE:ETHUSDT. Voir la page Exchanges, Symboles et Timeframes pour l’alignement avec le symbole principal.

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

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.