Indicateur Session High/Low : formule, réglages et lecture
Session High/Low trace les prix le plus haut et le plus bas échangés depuis l'ouverture de la séance, en deux lignes sur le graphique de prix. Les deux extrêmes se remettent à zéro à chaque ouverture de séance (17:00 CT sur le calendrier CME) et ne s'écartent que lorsqu'un nouvel extrême s'imprime.
Senzoukria · Indicateurs · Updated September 2026
Session High/Low — Structure et séances, sur le graphique des prix.
Ce que mesure Session High/Low
Les deux lignes suivent des extrêmes courants, pas le plus haut et le plus bas définitifs d'une séance terminée : à chaque barre, elles montrent le prix le plus éloigné atteint jusque-là de chaque côté. Comme un extrême courant existe dès la toute première barre d'une séance, les lignes sont définies immédiatement, sans la période de chauffe qu'exige une moyenne. Les valeurs courantes se construisent barre par barre dans l'ordre chronologique et se réinitialisent dès qu'une barre appartient à une nouvelle ouverture de séance : la seule chose qui déplace une ligne est une barre qui s'échange au-delà.
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 :
`to` d'un niveau : borne droite (dernière barre) d'une tranche passée, null (= bord droit du chart) pour la dernière tranche chargée. */ function rangeTo( endBarIdx: number, isLast: boolean, bars: readonly FootprintBar[], ): number | null { return isLast ? null : bars[endBarIdx].bucketTsNs; } /** H/L des barres d'une session STRICTEMENT avant `endSec` (bucket start < endSec — même règle de fenêtre que l'IB de profiles.ts). `null` si aucune barre de la fenêtre n'est chargée (chargement en cours de séance) : un range partiel serait un mensonge. */ function windowHiLo( bars: readonly FootprintBar[], ses: SessionSlice, endSec: number, ): { hi: number; lo: number } | null { let hi = Number.NEGATIVE_INFINITY; let lo = Number.POSITIVE_INFINITY; for (let i = ses.start; i <= ses.end; i++) { const b = bars[i]; if (b.bucketTsNs / 1e9 >= endSec) break; // barres chronologiques (moteur) if (b.high > hi) hi = b.high; if (b.low < lo) lo = b.low; } return Number.isFinite(hi) && Number.isFinite(lo) ? { hi, lo } : null; } /** H, L et close (dernière barre) d'une session complète. Les tranches de `splitSessions` sont non vides par construction → extrêmes finis. */ function sessionHLC( bars: readonly FootprintBar[], ses: SessionSlice, ): { h: number; l: number; c: number } { let h = Number.NEGATIVE_INFINITY; let l = Number.POSITIVE_INFINITY; for (let i = ses.start; i <= ses.end; i++) { if (bars[i].high > h) h = bars[i].high; if (bars[i].low < l) l = bars[i].low; } return { h, l, c: bars[ses.end].close }; } /** Extrêmes COURANTS (running high/low) par barre, reset à chaque ouverture de session (17:00 CT). Partagé par session-high-low et session-mid. */ function runningSessionExtremes( bars: readonly FootprintBar[], ctx: SeriesContext, ): Array<{ hi: number; lo: number }> { const out: Array<{ hi: number; lo: number }> = []; let hi = 0; let lo = 0; let curOpen: number | null = null; for (const b of bars) { const open = barSessionOpenSec(b, ctx); if (open !== curOpen) { curOpen = open; hi = b.high; lo = b.low; } else { if (b.high > hi) hi = b.high; if (b.low < lo) lo = b.low; } out.push({ hi, lo }); } return out; } /** Clé de semaine CME d'une session, depuis son `openSec` (17:00 CT). Jour de TRADE = jour UTC de (openSec + 12 h) : l'open est à 22:00 (CDT) ou 23:00 (CST) UTC, +12 h tombe toujours le lendemain 10:00/11:00 UTC — juste dans les deux régimes DST (l'ouverture du dimanche = session du lundi). Semaines base LUNDI, ancrées sur l'epoch-day 4 (lundi 5 janv. 1970) : lundi→vendredi de trade partagent la même clé. */ function cmeWeekKey(openSec: number): number { const tradeDay = Math.floor((openSec + 12 * 3600) / 86400); return Math.floor((tradeDay - 4) / 7); } // ── Indicateurs ───────────────────────────────────────────────────────────── /** High/Low de session « developing » : extrêmes courants (running max des highs / min des lows) depuis l'ouverture de session (17:00 CT), reset à CHAQUE ouverture. Défini dès la 1ʳᵉ barre — un extrême courant existe immédiatement, contrairement à une moyenne : pas de warm-up. 2 lignes.
Comment le lire
- Une ligne de plus haut qui reste plate pendant que le prix travaille plus bas signifie simplement qu'aucun nouvel extrême ne s'est imprimé ; le niveau est là où la dernière tentative haussière s'est arrêtée.
- Quand les deux lignes s'écartent sur la même barre, la plage de la séance s'est élargie des deux côtés à la fois — c'est à quoi ressemble une barre englobante sur cet indicateur.
- L'écart vertical entre les deux lignes est la plage de séance atteinte jusqu'ici ; lisez-le avec Range Compression pour voir si la journée continue de se contracter.
- Un prix qui revient sur un extrême de séance encore intact, c'est le moment de regarder le footprint à cet endroit plutôt que de supposer que le niveau tient ou cède.
- Juste après la remise à zéro de 17:00 CT, les lignes sont proches l'une de l'autre par construction : les lectures précoces portent donc peu d'information sur la journée.
Paramètres et valeurs par défaut
Le seul réglage de fond est Smoothing, à 1 par défaut, c'est-à-dire les extrêmes bruts. L'augmenter (jusqu'à 200) moyenne les lignes tracées sur autant de barres, ce qui les fait retarder sur l'extrême réel et cesser de marquer le prix exact qui s'est échangé — rarement ce qu'on attend d'un niveau censé être précis. Les deux couleurs (#26a69a pour le plus haut, #ef5350 pour le plus bas) ne font que distinguer les lignes visuellement.
| Paramètre | Type | Par défaut | Bornes |
|---|---|---|---|
| Smoothing | number | 1 | 1 – 200 |
Ce qu’il ne montre pas
L'indicateur rapporte deux prix et rien d'autre : il ne peut pas dire combien de volume s'est échangé sur un extrême, ni quel côté agressait quand il a été posé. Sa limite de séance est l'ouverture CME de 17:00 CT : un instrument sur un autre calendrier affichera une remise à zéro qui ne correspond pas à sa propre journée. Les extrêmes sont mesurés sur les barres présentes dans le graphique : une séance dont les heures d'ouverture ne sont pas chargées — typiquement la première au bord gauche — produit des lignes tracées sur une fraction de cette séance. Qu'un niveau soit atteint ne dit rien de sa capacité à tenir.
Indicateurs liés
- Session Mid — Structure et séances
- Prior Session VWAP — Structure et séances
- Prior Week High/Low — Structure et séances
- Engulfing — Structure et séances
- Pin Bar — Structure et séances
- Inside Bar — Structure et séances
Cette page dans d’autres langues
Frequently asked questions
- Quand le plus haut et le plus bas de séance se remettent-ils à zéro ?
- Le plus haut et le plus bas courants se réinitialisent à chaque ouverture de séance, ancrée à 17:00 CT sur le calendrier CME. Tout ce qui s'échange à partir de cette ouverture appartient à la nouvelle séance, heures de nuit comprises : la remise à zéro ne tombe donc ni à minuit, ni à l'ouverture des heures régulières.
- Pourquoi la première séance de mon graphique montre-t-elle une plage plus étroite qu'elle ne devrait ?
- Les lignes sont calculées sur les barres réellement chargées. Si votre historique commence au milieu d'une séance, les extrêmes courants démarrent à la première barre chargée et non à l'ouverture de 17:00 CT : tout ce qui s'est échangé avant ne fait pas partie de la plage affichée. Remonter assez loin pour charger la séance complète rétablit les bons extrêmes.
- Le plus haut et le plus bas de séance sont-ils les mêmes que ceux de la journée ?
- Le plus souvent non. Cet indicateur ancre la séance à l'ouverture de 17:00 CT : les heures de nuit sont donc incluses. Un plus haut et un plus bas quotidiens cotés sur les seules heures régulières différeront chaque fois que l'extrême a été fait en dehors de ces heures.