ATR Stop (long) 指标:公式、参数与读法
ATR Stop(多头)在每根K线收盘价下方固定倍数的平均真实波幅处画一条参考线,为多头仓位提供一个按波动率缩放的价位。它叠加在价格上,只是一条画线——不会据此下任何订单。
Senzoukria · 指标 · Updated September 2026
ATR Stop (long) — 波动率, 叠加在价格图上.
ATR Stop (long) 测量的是什么
该线为收盘价减去乘数 × N 周期 Wilder ATR,默认 14 根K线、乘数 2。用 ATR 而不是固定点数表示距离,可以让该价位被触及的概率在快速的开盘和平静的隔夜时段之间大致可比,因为在这两种环境下,二十个点的意义完全不同。这个版本双向跟随收盘价:收盘上升时它上升,收盘下降时它也回落,因此不是只进不退的棘轮。ATR 仍在预热期时不绘制任何内容,而不是用不完整的均值构造一个残缺的价位。
公式:代码中的实现
这不是别处常见的定义,而是所发布代码实际计算的内容,记录在实现旁边:
Param entier ≥ 1 (les périodes n'ont pas de sens en fractions de barre). */ function intParam( params: Record<string, unknown>, key: string, fallback: number, ): number { return Math.max(1, Math.floor(numParam(params, key, fallback))); } /** Plus haut des N dernières barres (fenêtre [i−N+1, i]). Warm-up → null : fenêtre incomplète = période mensongère (règle `donchian`). */ function rollingHigh( bars: readonly FootprintBar[], n: number, ): Array<number | null> { const out: Array<number | null> = new Array(bars.length).fill(null); for (let i = n - 1; i < bars.length; i++) { let hi = Number.NEGATIVE_INFINITY; for (let j = i - n + 1; j <= i; j++) { if (bars[j].high > hi) hi = bars[j].high; } out[i] = hi; } return out; } /** Plus bas des N dernières barres — symétrique de `rollingHigh`. */ function rollingLow( bars: readonly FootprintBar[], n: number, ): Array<number | null> { const out: Array<number | null> = new Array(bars.length).fill(null); for (let i = n - 1; i < bars.length; i++) { let lo = Number.POSITIVE_INFINITY; for (let j = i - n + 1; j <= i; j++) { if (bars[j].low < lo) lo = bars[j].low; } out[i] = lo; } return out; } /** Range COMPLET d'une session (max high − min low). Les tranches de `splitSessions` sont non vides par construction → extrêmes finis. */ function sessionRange( bars: readonly FootprintBar[], ses: SessionSlice, ): number { let hi = Number.NEGATIVE_INFINITY; let lo = Number.POSITIVE_INFINITY; for (let i = ses.start; i <= ses.end; i++) { if (bars[i].high > hi) hi = bars[i].high; if (bars[i].low < lo) lo = bars[i].low; } return hi - lo; } /** `to` d'un niveau de session : borne droite pour une session passée, null (= bord droit du chart) pour la dernière session chargée. */ function sessionTo( ses: SessionSlice, isLast: boolean, bars: readonly FootprintBar[], ): number | null { return isLast ? null : bars[ses.end].bucketTsNs; } /** Sortie ligne alignée sur un tableau de valeurs déjà calculé. */ function valuesLine( bars: readonly FootprintBar[], vals: ReadonlyArray<number | null>, ): SeriesPoint[] { return bars.map((b, i) => ({ time: b.bucketTsNs, value: vals[i] })); } // ── 1-2. Stops ATR ────────────────────────────────────────────────────────── /** ATR Stop (long) — stop suiveur THÉORIQUE d'une position longue : stop[i] = close[i] − mult × ATR_N[i] Défauts N=14 (Wilder), mult=2 : deux ATR sous le close, la distance classique pour laisser respirer un indice CME sans se faire sortir par le bruit d'une barre. POURQUOI en ATR et pas en points fixes : un stop à 20 points est serré à 09:30 et large à 03:00 — l'ATR le met à l'échelle de la volatilité de l'instant, donc la probabilité de touche reste comparable d'un régime à l'autre. ATTENTION (documenté, assumé) : cette version SUIT le close, elle ne cliquete PAS (elle peut redescendre si le close redescend). Le stop qui ne recule jamais est `volatility-stop`. Warm-up ATR → null (le renderer lève le crayon), jamais de stop partiel.
如何解读
- 价格与该线之间的距离就是当前的波动预算:距离变宽,说明K线覆盖的范围更大,固定点数的止损会被普通噪音触发。
- 收盘跌破该线标志着这个价位失守,但要看是两者中的哪一个在动——可能是价格跌穿了它,也可能是线跟着价格一起下来了。
- 由于它跟踪收盘价,一次深度回调会把价位一起拉低。为只进不退而设计的是波动率止损(volatility stop);吊灯止损(chandelier exit)则把锚点换成窗口内的最高价,行为又有所不同。
- 调高乘数会让线离得更远——触及更少、距离更大;调低则相反。两者都谈不上更安全,只是在触及频率与距离之间取舍。
- 如果线落在成交密集的价格区域内,它就位于活动已经集中的地方,而这一点计算本身完全不知道。
参数与默认值
ATR 周期默认 14,决定距离适应的速度——周期短,平静阶段过后线很快收紧;周期长,平静期间仍保持距离。乘数默认 2,可设 0.1 至 10,线性缩放偏移量;正是这个参数决定该价位能容忍多大的正常波动。
| 参数 | 类型 | 默认值 | 取值范围 |
|---|---|---|---|
| ATR period | number | 14 | 1 – 200 |
| ATR multiplier | number | 2 | 0.1 – 10 |
它无法显示的内容
这条线是图表研究,不是订单,也不是仓位:没有任何东西会据此提交、移动或撤销止损,Senzoukria 中的实盘下单走独立的交易路径,并需手动武装。它不知道你的入场价、仓位大小或账户,因此与价格的距离并不是亏损金额。由于它跟随收盘价,在回撤期间可能后退,这与锁定利润的追踪止损正好相反。ATR 只衡量波幅,因此该价位对订单流视而不见——该价位上的吸收或大额买单挂单都不在它的输入之内。
相关指标
- True Range — 波动率
- Std Dev — 波动率
- Squeeze — 波动率
- Chaikin Volatility — 波动率
- Realized Vol — 波动率
- Skewness — 波动率
其他语言版本
Frequently asked questions
- ATR Stop 指标会下真实的止损单吗?
- 不会。它只在图表上画一条线。Senzoukria 中的下单是单独的操作,需要人工明确武装,这个研究与之没有任何连接。
- 为什么我的 ATR 止损线会往下走?
- 这个版本以收盘价为锚,而不是以滚动最高值为锚,所以收盘下跌时线也会随之下降。这是文档中说明的行为,不是缺陷。如果你需要一个对多头仓位永不反向移动的价位,请使用为棘轮式移动而设计的波动率止损(volatility stop)。
- ATR 乘数应该用多少?
- 默认是 14 周期均值的 2 倍 ATR,这是让股指期货有呼吸空间的常用距离。乘数更小,价位会落在正常K线的波动范围内,会被频繁触及;乘数更大,价位离得更远,代价是距离更大。不存在脱离品种和K线类型而普遍正确的数值。