成交量游程 K 线生成器(VolumeRunBarGenerator)

增量式、因果技术分析文档

摘要

VolumeRunBarGenerator 实现固定阈值的成交量游程 K 线。当前 K 线内的买方 成交量与卖方成交量分别累计;任一侧的总量达到 threshold 时结束 K 线。

更新 API

ind = rtta.VolumeRunBarGenerator(threshold=10000.0)
result = ind.update(close, volume)
# result.bar_open, bar_close, bar_high, bar_low, bar_volume,
# result.direction, result.complete, result.bars

工作原理

成交量游程 K 线衡量持续积累的单边成交量,而不是不容中断的同号序列。相反 方向的成交量会加入另一侧的累计值,不会重置当前 K 线或 OHLC。RTTA 对经典的 占优侧统计量采用固定阈值;如需基于预期游程动态调整阈值,可由调用方在外部 维护。

递推公式

先按逐笔规则判定价格方向;平盘价格沿用最近的非零方向。令 \(v_t^+=\max(v_t,0)\),并维护:

\[V_t^+=\sum v_i^+1_{\{b_i=+1\}},\qquad V_t^-=\sum v_i^+1_{\{b_i=-1\}},\]
\[\theta_t=\max(V_t^+,V_t^-).\]

当 \(\theta_t\ge\texttt{threshold}\) 时结束 K 线。bar_volume 等于 \(\theta_t\),direction 表示累计量更大的一侧。未完成时仍报告当前的 \(\theta_t\),但方向为 0。OHLC 覆盖该 K 线中的所有逐笔,包括方向交替的 成交。

完成后,双方成交量累计值与 OHLC 都会重置;上一价格和最近的非零逐笔方向 继续保留,用于判断下一根 K 线的第一笔成交。整个数据流的第一个观测只初始化 价格,因此不计入任何一侧的成交量。

实现说明

递推过程在 src/rtta/indicator.cppclass VolumeRunBarGenerator 中实现。 结果类型为 InformationBarResult

参考资料