Schaff Trend Cycle 指标:公式、参数与读法
沙夫趋势周期(Schaff Trend Cycle,STC)将 MACD 线连续经过两次随机指标式的归一化,得到一个 0 到 100 的振荡器。默认参数为 23 周期快速 EMA、50 周期慢速 EMA、周期长度 10、平滑系数 0.5。
Senzoukria · 指标 · Updated September 2026
Schaff Trend Cycle — 动量, 显示在图表下方的独立面板中.
Schaff Trend Cycle 测量的是什么
输入是收盘价两条指数平均线之差,每条都以简单移动平均作为初始值,并使用经典系数而非 Wilder 系数。第一阶段把这个无界且依赖品种的数值,转换为它在自身周期窗口内 0 到 100 的位置,再用固定系数(默认 0.5)做指数平滑;注意这个系数是权重,不是周期,并以第一个有定义的值作为初始值。第二阶段对平滑后的结果重复同样的操作。第二次处理正是这个指标的关键,也是初次阅读时最容易忽略的:它衡量的是“位置的位置”,因此这条线描述的是一段行情在其周期中推进了多远,而不是这段行情有多大。当窗口走平(最大值等于最小值)时,输出无定义,平滑状态被冻结,而不是用一个编造的值继续推进。
公式:代码中的实现
这不是别处常见的定义,而是所发布代码实际计算的内容,记录在实现旁边:
STC — Schaff Trend Cycle (Doug Schaff, 1999) : le MACD passé à la moulinette d'une DOUBLE STOCHASTIQUE. 1. macd = EMA_fast(close) − EMA_slow(close) — EMA à GRAINE SMA, α = 2/(N+1) (convention du repo), PAS de Wilder ; 2. PREMIÈRE stochastique, sur le macd, fenêtre `cycle` : %K₁ = 100·(macd − min)/(max − min) pf ← premier %K₁ défini, puis pf + f·(%K₁ − pf) (f = `factor`) 3. SECONDE stochastique, sur `pf` — MÊME fenêtre, MÊME facteur : %K₂ = 100·(pf − min)/(max − min) STC ← premier %K₂ défini, puis STC + f·(%K₂ − STC) POURQUOI DEUX ÉTAGES — c'est tout l'indicateur, et c'est ce que la première lecture rate. Une seule stochastique sur le MACD donnerait un signal qui sature à 0/100 dès que le MACD touche un extrême de sa fenêtre : bruyant et binaire. Le premier étage transforme le MACD (grandeur non bornée, dépendant de l'instrument) en un POSITIONNEMENT 0..100 dans son propre cycle ; le second étage mesure la position de CE positionnement dans SON cycle, c'est- à-dire la MATURITÉ du mouvement plutôt que son amplitude. D'où la lecture usuelle : franchissement de 25 en montée = début de cycle haussier, franchissement de 75 en baisse = fin. Le lissage entre les deux n'est PAS une EMA de période : c'est un lissage exponentiel à FACTEUR FIXE (0.5 chez Schaff), amorcé sur la première valeur définie. Défauts 23/50/10, facteur 0.5 (Schaff). Fenêtre PLATE (max == min) → null ET état FIGÉ (cf. `schaffStage`) : ni valeur inventée, ni report de la dernière — le trou se propage aux fenêtres qui le contiennent, ce qui est le comportement voulu. Warm-up : slow − 1 (EMA lente) + cycle − 1 (étage 1) + cycle − 1 (étage 2).
如何解读
- 常规读法把向上穿越 25 视为上升周期的开始,把向下穿越 75 视为一个周期的结束。这些水平来自指标的设计,这里没有任何测量结果证明它们。
- 这条线会长时间贴近 0 或 100,因为两层叠加的归一化很快就会饱和。两个区域之间的转换,比停留在其中的时间包含更多信息。
- 离开边界是大多数读法关注的事件,而它发生在底层 MACD 已经拐头之后。
- 由于输出有界,强趋势和温和趋势最终都会停在刻度顶部。行情的幅度要看价格或 MACD 本身,绝不要看这条线。
- 线上的断点标记的是走平的窗口,此时计算没有参照;内部状态在这些窗口中保持不变,而不是继续推进。
参数与默认值
快速 EMA 23 与慢速 EMA 50 定义 MACD 输入,慢速参数最大可设 500。周期(Cycle)默认 10,可调范围 2 到 200,决定两个随机阶段共用的窗口。平滑系数 0.5 控制每个阶段跟随其原始随机值的速度,可设 0.05 到 1:设为 1 时平滑消失,每个阶段直接取原始值;取值较低则线条迟钝,离开边界的速度也慢。
| 参数 | 类型 | 默认值 | 取值范围 |
|---|---|---|---|
| Fast EMA | number | 23 | 1 – 200 |
| Slow EMA | number | 50 | 2 – 500 |
| Cycle | number | 10 | 2 – 200 |
| Smoothing factor | number | 0.5 | 0.05 – 1 |
它无法显示的内容
这里叠加了三重延迟:慢速指数平均,再加上每个随机阶段各一个周期窗口。默认参数下为 49 加 9 加 9,也就是要经过 67 根K线的预热才能画出任何东西。有界的刻度完全丢弃了幅度信息。计算只基于收盘价,因此其中没有任何东西反映订单簿的挂单流动性,或足迹图所记录的主动方。走平的窗口会以断点的形式传递到之后所有包含它的窗口,这是有意为之,但会在平静时段留下明显的空洞。
相关指标
- Stochastic — 动量
- Stoch RSI — 动量
- CCI — 动量
- ROC — 动量
- Williams %R — 动量
- Momentum — 动量
其他语言版本
Frequently asked questions
- 沙夫趋势周期(STC)衡量的是什么?
- 它在 0 到 100 的刻度上衡量一段 MACD 行情在其自身周期中推进了多远。MACD 线先被归一化为它在近期区间内的位置,这个位置再在它自身的近期区间内被归一化一次,因此输出描述的是行情的成熟度,而不是幅度。
- STC 为什么要做两次随机指标运算?
- 只对 MACD 做一次随机运算,一旦 MACD 触及窗口极值就会在 0 或 100 饱和,得到一个嘈杂、几乎二元的信号。第一阶段把无界的 MACD 转换为位置;第二阶段衡量这个位置在其自身周期中所处的地方,由此才得到更平滑、以周期为导向的线。
- 沙夫趋势周期上的 25 和 75 代表什么?
- 它们是指标设计自带的常规读数水平:向上穿越 25 通常被视为上升周期的开始,向下穿越 75 则被视为一个周期的结束。它们是附着在构造上的惯例,并非从这里公布的任何测量中得出的阈值。