Session High/Low 指标:公式、参数与读法
交易时段高/低点在价格图上以两条线绘制自交易时段开盘以来成交的最高价和最低价。两个极值都在每个交易时段开盘时重置(CME 日历为 17:00 CT),只有在出现新的极值时才向外移动。
Senzoukria · 指标 · Updated September 2026
Session High/Low — 结构与交易时段, 叠加在价格图上.
Session High/Low 测量的是什么
两条线跟踪的是持续更新的极值,而不是已完成交易时段的最终高低点:在任一根K线上,它们显示的是到目前为止两侧到达的最远价格。由于持续极值从交易时段的第一根K线起就存在,这两条线立即有定义,不需要平均类指标那样的预热。持续值按时间顺序逐根K线构建,一旦某根K线属于新的交易时段开盘就立即重置,因此唯一能让线移动的,是成交越过它的K线。
公式:代码中的实现
这不是别处常见的定义,而是所发布代码实际计算的内容,记录在实现旁边:
`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.
如何解读
- 价格走低时高点线保持水平,只说明没有出现新的极值;该价位就是上一次向上尝试停下的位置。
- 当两条线在同一根K线内同时向外移动时,交易时段区间在两侧同时扩大——这就是外包K线在这个指标上的样子。
- 两条线之间的垂直距离就是到目前为止的交易时段区间;可与 Range Compression 一起看,判断当天是否仍在收窄。
- 价格回到一个尚未触及的交易时段极值时,应去看那里的足迹图,而不是假定该价位会守住或被突破。
- 17:00 CT 重置之后,两条线在构造上彼此贴近,因此早期读数对当天的信息量很小。
参数与默认值
唯一实质性的设置是平滑,默认 1,即绘制原始极值。提高它(最多 200)会把绘制的线在相应数量的K线上做平均,使其滞后于实际极值,不再标出确切的成交价格——对于一个本应精确的价位,这很少是你想要的。两种颜色(高点 #26a69a,低点 #ef5350)只用于在视觉上区分两条线。
| 参数 | 类型 | 默认值 | 取值范围 |
|---|---|---|---|
| Smoothing | number | 1 | 1 – 200 |
它无法显示的内容
这个指标只报告两个价格,别无其他:它无法告诉你极值处成交了多少量,也无法告诉你极值形成时哪一方在主动。它的交易时段边界是 CME 的 17:00 CT 开盘,因此交易日历不同的品种,其重置时刻与自身的交易日不符。极值由图表中现有的K线测得,因此开盘时段未加载的交易时段——通常是图表左侧边缘的第一个交易时段——画出的线只来自该时段的一部分。价格到达某个价位,并不说明它会不会守住。
相关指标
- Session Mid — 结构与交易时段
- Prior Session VWAP — 结构与交易时段
- Prior Week High/Low — 结构与交易时段
- Engulfing — 结构与交易时段
- Pin Bar — 结构与交易时段
- Inside Bar — 结构与交易时段
其他语言版本
Frequently asked questions
- 交易时段高低点何时重置?
- 持续更新的最高价和最低价在每个交易时段开盘时重置,锚定在 CME 日历的 17:00 CT。从该开盘起的所有成交都属于新的交易时段,包括夜盘时段,因此重置既不在午夜,也不在常规交易时段开盘。
- 为什么图表上第一个交易时段的区间比实际更窄?
- 两条线由实际加载的K线计算。如果历史数据从交易时段中途开始,持续极值会从第一根已加载的K线开始,而不是从 17:00 CT 开盘开始,此前的成交都不在所显示的区间内。向左滚动到足以加载完整交易时段,即可恢复正确的极值。
- 交易时段高低点和日内高低点一样吗?
- 通常不一样。这个指标把交易时段锚定在 17:00 CT 开盘,因此包含夜盘时段。只按常规交易时段报出的日内高低点,在极值出现于这些时段之外时就会不同。