Индикатор Session High/Low: формула, настройки и чтение
Session High/Low рисует на ценовом графике две линии — самую высокую и самую низкую торгуемую цену с момента открытия сессии. Оба экстремума сбрасываются на каждом открытии (17:00 CT по календарю CME) и сдвигаются наружу только тогда, когда напечатан новый экстремум.
Senzoukria · Индикаторы · Updated September 2026
Session High/Low — Структура и сессии, на ценовом графике.
Что измеряет Session High/Low
Линии отслеживают текущие экстремумы, а не итоговые максимум и минимум завершённой сессии: на любом баре они показывают самую дальнюю достигнутую к этому моменту цену с каждой стороны. Поскольку текущий экстремум существует уже с первого бара сессии, линии определены сразу, без прогрева, который нужен любому среднему. Текущие значения строятся бар за баром в хронологическом порядке и сбрасываются в тот момент, когда бар относится к новому открытию сессии, — сдвинуть линию может только бар, торгующий за её пределами.
Формула — так, как она реализована
Это не привычное определение из других источников, а то, что вычисляет поставляемый код, задокументированное рядом с реализацией:
`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.
Как его читать
- Плоская линия максимума, пока цена работает ниже, означает просто, что нового экстремума не напечатано; уровень — это место, где остановилась последняя попытка вверх.
- Когда обе линии расходятся наружу на одном баре, диапазон сессии расширился сразу в обе стороны — так на этом индикаторе выглядит внешний бар (outside bar).
- Вертикальный зазор между линиями — это диапазон сессии на текущий момент; читайте его вместе с Range Compression, чтобы понять, продолжает ли день сжиматься.
- Возврат цены к нетронутому экстремуму сессии — момент посмотреть на footprint там, а не предполагать, устоит уровень или будет пробит.
- Сразу после сброса в 17:00 CT линии по построению стоят близко друг к другу, поэтому ранние показания мало говорят о дне.
Параметры и значения по умолчанию
Единственная содержательная настройка — «Сглаживание», по умолчанию 1, то есть рисуются сырые экстремумы. Его повышение (вплоть до 200) усредняет рисуемые линии по этому числу баров, отчего они отстают от фактического экстремума и перестают отмечать точную торгуемую цену — редко то, чего ждут от уровня, который должен быть точным. Два цвета (#26a69a для максимума и #ef5350 для минимума) только разделяют линии визуально.
| Параметр | Тип | По умолчанию | Диапазон |
|---|---|---|---|
| Smoothing | number | 1 | 1 – 200 |
Чего он не показывает
Индикатор сообщает две цены и ничего больше: он не скажет ни сколько объёма прошло на экстремуме, ни какая сторона агрессировала, когда он был установлен. Граница сессии у него — открытие CME в 17:00 CT, поэтому инструмент с другим торговым календарём покажет сброс, не совпадающий с его собственным днём. Экстремумы измеряются по барам, присутствующим на графике, поэтому сессия, часы открытия которой не загружены — обычно первая у левого края, — даёт линии, построенные по её части. То, что уровень достигнут, ничего не говорит о том, устоит ли он.
Похожие индикаторы
- Session Mid — Структура и сессии
- Prior Session VWAP — Структура и сессии
- Prior Week High/Low — Структура и сессии
- Engulfing — Структура и сессии
- Pin Bar — Структура и сессии
- Inside Bar — Структура и сессии
Эта страница на других языках
Frequently asked questions
- Когда сбрасываются максимум и минимум сессии?
- Текущие максимум и минимум сбрасываются на каждом открытии сессии, привязанном к 17:00 CT по календарю CME. Всё, что торгуется с этого открытия, относится к новой сессии, включая ночные часы, поэтому сброс приходится не на полночь и не на открытие основной сессии.
- Почему первая сессия на моём графике показывает более узкий диапазон, чем должна?
- Линии считаются по фактически загруженным барам. Если история начинается в середине сессии, текущие экстремумы стартуют с первого загруженного бара, а не с открытия в 17:00 CT, и всё, что торговалось до него, в показанный диапазон не входит. Прокрутка назад достаточно далеко подгружает полную сессию и восстанавливает верные экстремумы.
- Максимум и минимум сессии — это то же, что дневные максимум и минимум?
- Обычно нет. Этот индикатор привязывает сессию к открытию в 17:00 CT, поэтому ночные часы включены. Дневные максимум и минимум, посчитанные только по основной сессии, будут отличаться всякий раз, когда экстремум сделан за её пределами.