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 = 18Recherche 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 = 20Filtre 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 . 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ètre | Description |
|---|---|
idTexte Obligatoire | Nom unique utilisé pour identifier la série ATR. |
lengthEntier 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) |
symbolTexte 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. |
timeframeTexte 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 :
| Variable | Description |
|---|---|
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.lengthDécimal | Longueur utilisée. |
atr.high_sourceatr.low_sourceatr.close_sourceTexte | 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.symbolTexte | Symbole de marché utilisé. |
atr.timeframeTexte | 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.