摘要
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.cpp 的 class VolumeRunBarGenerator 中实现。
结果类型为 InformationBarResult。
