摘要
RunBarGenerator 实现 López de Prado 逐笔游程 K 线的固定阈值版本。当前 K 线
内的买方逐笔数与卖方逐笔数分别累计;占优一侧达到 threshold 时结束 K 线。
中间即使出现相反方向的成交,也不会抹去此前一侧已经积累的证据。
更新 API
ind = rtta.RunBarGenerator(threshold=10)
result = ind.update(close)
result = ind.update(close, volume) # 仍以逐笔数决定结束时机
# result.bar_open, bar_close, bar_high, bar_low, bar_volume,
# result.direction, result.complete, result.bars
单参数重载在 bar_volume 中报告占优一侧的逐笔数。成交量重载仍以占优一侧的
逐笔数判断是否完成,但 bar_volume 改为报告该侧累计的成交量。
工作原理
游程 K 线采样的是持续的订单流失衡,而不是必须首尾相接的同号“连胜”。例如 “买、卖、买、买”包含三笔买方成交和一笔卖方成交;其中的卖出不会让买方计数 归零。自适应版本通常估计预期 K 线长度与买方概率;RTTA 直接暴露其占优侧 统计量并使用固定阈值,便于调用方在外部估计或动态调整阈值。
递推公式
逐笔规则为:
在出现第一个非零方向之前,平盘逐笔仍不归类。对当前 K 线维护:
当
时结束 K 线。若 \(N_t^+\ge N_t^-\),direction 为 \(+1\),否则为
\(-1\);complete 与 bars 均为 1。OHLC 覆盖分配给该 K 线的所有价格,
包括方向交替的逐笔。完成后,双方计数和 OHLC 为下一根 K 线重置,但上一价格
及最近的非零逐笔方向会跨越边界保留。
使用 update(close, volume) 时,还会以 \(v_t^+=\max(v_t,0)\) 分别累计
\(V^+\)、\(V^-\),仅用于把 \(\max(V^+,V^-)\) 报告为 bar_volume。
实现说明
递推过程在 src/rtta/indicator.cpp 的 class RunBarGenerator 中实现。第一个
观测只初始化价格和 OHLC,本身没有逐笔方向。
