Индикатор 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 для минимума) только разделяют линии визуально.

Session High/Low — параметры, доступные в приложении, со значениями по умолчанию.
ПараметрТипПо умолчаниюДиапазон
Smoothingnumber11 – 200

Чего он не показывает

Индикатор сообщает две цены и ничего больше: он не скажет ни сколько объёма прошло на экстремуме, ни какая сторона агрессировала, когда он был установлен. Граница сессии у него — открытие CME в 17:00 CT, поэтому инструмент с другим торговым календарём покажет сброс, не совпадающий с его собственным днём. Экстремумы измеряются по барам, присутствующим на графике, поэтому сессия, часы открытия которой не загружены — обычно первая у левого края, — даёт линии, построенные по её части. То, что уровень достигнут, ничего не говорит о том, устоит ли он.

Все индикаторы

Эта страница на других языках

Frequently asked questions

Когда сбрасываются максимум и минимум сессии?
Текущие максимум и минимум сбрасываются на каждом открытии сессии, привязанном к 17:00 CT по календарю CME. Всё, что торгуется с этого открытия, относится к новой сессии, включая ночные часы, поэтому сброс приходится не на полночь и не на открытие основной сессии.
Почему первая сессия на моём графике показывает более узкий диапазон, чем должна?
Линии считаются по фактически загруженным барам. Если история начинается в середине сессии, текущие экстремумы стартуют с первого загруженного бара, а не с открытия в 17:00 CT, и всё, что торговалось до него, в показанный диапазон не входит. Прокрутка назад достаточно далеко подгружает полную сессию и восстанавливает верные экстремумы.
Максимум и минимум сессии — это то же, что дневные максимум и минимум?
Обычно нет. Этот индикатор привязывает сессию к открытию в 17:00 CT, поэтому ночные часы включены. Дневные максимум и минимум, посчитанные только по основной сессии, будут отличаться всякий раз, когда экстремум сделан за её пределами.

Keep reading