Indicateur ATR % : formule, réglages et lecture

ATR % est l'Average True Range de Wilder divisé par la clôture courante et exprimé en pourcentage, ce qui rend la volatilité barre par barre comparable entre des instruments cotant à des niveaux de prix très différents. Senzoukria l'affiche dans son propre panneau, avec par défaut une moyenne de Wilder sur 14 périodes.

Senzoukria · Indicateurs · Updated September 2026


ATR % Volatilité, dans son propre panneau sous le graphique.

Ce que mesure ATR %

Le true range de chaque barre est la plus grande de trois distances : son plus haut moins son plus bas, l'écart entre le plus haut et la clôture précédente, et l'écart entre le plus bas et la clôture précédente ; un mouvement de nuit entre deux barres est ainsi compté au lieu d'être ignoré. La toute première barre de l'historique chargé n'a pas de prédécesseur : son true range est simplement sa propre amplitude. Ces true ranges sont lissés par la récurrence de Wilder, initialisée sur la moyenne arithmétique des N premières valeurs, puis divisés par la clôture de la barre et multipliés par 100. Une lecture de 0,35 signifie donc que la barre moyenne couvre environ un tiers de pour cent du prix, que le symbole soit MNQ ou 6E. La série ne renvoie rien tant que la moyenne est en préchauffage, et rien non plus quand la clôture est nulle ou négative, car un pourcentage d'une base non positive n'est pas une échelle.

La formule, telle qu’implémentée

Ce n'est pas la définition habituelle ailleurs : c'est ce que calcule le code livré, documenté à côté de son implémentation :

True Range de Wilder : TR[0] = high − low ; TR[i] = max(high − low, |high − closeₚ|, |low − closeₚ|). */ function trueRanges(bars: readonly FootprintBar[]): number[] { const tr: number[] = new Array(bars.length); for (let i = 0; i < bars.length; i++) { const b = bars[i]; if (i === 0) { tr[i] = b.high - b.low; } else { const pc = bars[i - 1].close; tr[i] = Math.max( b.high - b.low, Math.abs(b.high - pc), Math.abs(b.low - pc), ); } } return tr; } /** ATR de Wilder (1978) : graine = moyenne des N premiers TR, puis ATR[i] = (ATR[i−1]·(N−1) + TR[i]) / N. Warm-up (< N barres) → null. Même récurrence que `atrSeries` d'averages.ts — recopiée pour que la famille reste autonome pendant la migration (cf. note d'en-tête). */ function wilderAtr( bars: readonly FootprintBar[], period: number, ): Array<number | null> { const n = Math.max(1, Math.floor(period)); const out: Array<number | null> = new Array(bars.length).fill(null); if (bars.length < n) return out; const tr = trueRanges(bars); let atr = 0; for (let i = 0; i < n; i++) atr += tr[i]; atr /= n; out[n - 1] = atr; for (let i = n; i < bars.length; i++) { atr = (atr * (n - 1) + tr[i]) / n; out[i] = atr; } return out; } /** σ de POPULATION fenêtré (÷N — la convention Bollinger, parité TradingView/ATAS). Two-pass autour de la moyenne de fenêtre (stabilité numérique, cf. en-tête). Warm-up (< N échantillons) → null. */ function stdPopSeries( values: readonly number[], period: number, ): Array<number | null> { const n = Math.max(1, Math.floor(period)); const means = smaSeries(values, n); const out: Array<number | null> = new Array(values.length).fill(null); for (let i = n - 1; i < values.length; i++) { const m = means[i]; if (m === null) continue; let acc = 0; for (let j = i - n + 1; j <= i; j++) { const d = values[j] - m; acc += d * d; } out[i] = Math.sqrt(acc / n); } return out; } // ── Defs ──────────────────────────────────────────────────────────────────── /** ATR % : ATR_N / close × 100 — l'ATR normalisé par le prix, comparable d'un instrument à l'autre (MNQ vs 6E). Même lissage Wilder que `atr`, défaut N=14. close ≤ 0 → null (pas d'échelle honnête) ; warm-up → null.

Comment le lire

  • Un ATR % qui monte signifie que chaque barre couvre plus de terrain par rapport au prix ; une ligne qui baisse, que les ranges se contractent même si le prix continue d'avancer.
  • La valeur étant normalisée par le prix, un même chiffre lu sur deux symboles décrit un mouvement comparable : c'est ce qui la rend utilisable pour dimensionner entre instruments.
  • La mesure n'a pas de direction : une expansion depuis un plateau bas se lit de la même manière, que les ranges se soient élargis à la hausse ou à la baisse.
  • Comparez la lecture actuelle avec la même heure des séances précédentes plutôt qu'avec un seuil absolu : l'ouverture et la période de roll ont leur propre niveau normal.
  • Une barre isolée hors norme est répartie sur N barres par la moyenne de Wilder : la marche visible sur la ligne est donc plus petite que la barre qui l'a provoquée.

Paramètres et valeurs par défaut

La période vaut 14 par défaut, le choix d'origine de Wilder, et commande à la fois la moyenne d'initialisation et le poids donné à chaque nouveau true range. Elle accepte de 1 à 200 : un réglage court, comme 5, réagit en quelques barres et se montre plus bruité, tandis que 50 ou plus fait de la ligne une mesure lente de régime. Au minimum de 1, le résultat se réduit au true range brut divisé par la clôture.

ATR % — paramètres exposés dans l’application, avec les valeurs livrées.
ParamètreTypePar défautBornes
Periodnumber141 – 200

Ce qu’il ne montre pas

L'ATR % dit de combien une barre a bougé, jamais dans quel sens ni qui l'a fait bouger : deux barres de même range peuvent porter un delta opposé et une issue opposée. Le lissage de Wilder est en retard par construction : un changement de régime apparaît progressivement, sur environ N barres. Dans les séances creuses, les ranges se réduisent parce que peu de transactions s'impriment, ce qui abaisse la lecture sans que le marché se soit réellement calmé. Le dénominateur est la clôture de la barre elle-même : le pourcentage dérive donc légèrement quand le prix est en tendance, même si le range absolu ne change pas.

Voir tous les indicateurs

Cette page dans d’autres langues

Frequently asked questions

Quelle est la différence entre l'ATR et l'ATR % ?
L'ATR s'exprime dans les unités de prix de l'instrument : 12 points sur un contrat ne se comparent pas à 12 points sur un autre. L'ATR % divise cette même moyenne de Wilder par la clôture courante et multiplie par 100, ce qui donne un chiffre sans unité. Le lissage et la définition du true range sont identiques ; seule l'échelle change.
Pourquoi l'ATR % est-il vide au début de mon graphique ?
La moyenne de Wilder est initialisée sur la moyenne des N premiers true ranges : aucune valeur n'existe avant que N barres soient chargées. L'indicateur ne renvoie rien sur ces barres plutôt que de tracer une moyenne partielle tirée d'un échantillon incomplet. Avec la période par défaut de 14, la ligne commence à la quatorzième barre.
Peut-on comparer l'ATR % entre un graphique de futures et un graphique crypto ?
La forme en pourcentage supprime la différence de niveau de prix : les chiffres se retrouvent sur la même échelle. Ce qui ne se transpose pas, c'est le contexte de trading : horaires de séance, liquidité et composition des barres diffèrent, et les symboles crypto dans Senzoukria servent uniquement à l'analyse, sans routage d'ordres. Comparez les niveaux dans des conditions de liquidité similaires plutôt qu'entre une nuit calme et l'ouverture de la séance cash.

Keep reading