摘要
AccumulativeSwingIndex 是 RTTA 对 Wilder 摆动指数进行流式累加的实现。
每根 K 线贡献一个 SI 增量,指标返回持续累积的总和,用来跟踪全部历史中的净方向性
摆动压力。
更新 API
value = rtta.AccumulativeSwingIndex(limit=0.5).update(open, high, low, close)
第一根 K 线用于初始化前一根 OHLC,并返回 0.0。此后每根 K 线都会将当前的
Swing Index 增量加入累计值。
工作原理
Welles Wilder 的 Swing Index 衡量一根 K 线的开盘与收盘结构中,有多少相对于 前一根 K 线构成了真正的摆动,并用一个限制值(预期的最大价格变化)进行缩放。 Accumulative Swing Index(ASI)就是这些增量的不定期累加,类似于 AD 或 OBV 累加每根 K 线的贡献。ASI 持续上升表示净看涨摆动结构,持续下降则表示净看跌 摆动结构。
RTTA 使用一个内部 SwingIndex 成员和一个标量累加器组合实现 ASI。
递推公式
令 \(O_t,H_t,L_t,C_t\) 分别为开盘价、最高价、最低价和收盘价;令 \(\ell\)
为 limit(默认 \(0.5\))。第一根 K 线只初始化前一根 OHLC,并令
\(ASI_0=0\)。
定义相对于前一根 K 线的绝对跳空幅度:
根据 \(A_t,B_t,C'_t\) 中的最大者选择分母因子 \(R_t\)。其中 \(C'_t\) 是当前 K 线的最高价—最低价振幅,而不是最高价与前一最低价之间的距离:
返回值为 \(ASI_t\)。
实现说明
递推过程实现在 src/rtta/indicator.cpp 的
class AccumulativeSwingIndex 中。该类持有一个 SwingIndex 成员,并累加
它的标量输出。另请参阅 SwingIndex。
