摘要
CDLTriStar 是 RTTA 对三星十字(Tri-star)K 线形态的流式检测器。
该形态由连续三根十字线构成,中间十字线的实体位置决定看涨或看跌倾向。
输出遵循 TA-Lib 约定:看涨匹配为 +100,看跌匹配为 -100,
形态未触发时为 0。
更新 API
value = rtta.CDLTriStar(fillna=True).update(open, high, low, close)
# 看涨匹配为 +100;有方向的看跌匹配为 -100;未匹配为 0
batch = rtta.CDLTriStar(fillna=True).batch(open, high, low, close)
update(...) 每次接收一根 OHLC K 线。advance(...) 使用相同输入但不返回
Python 值。在新实例上调用标量 batch(open, high, low, close),结果与依次
调用 update 一致。当 fillna=False 时,在至少取得 3 根 K 线前返回 NaN;
当 fillna=True(默认)时,未匹配的 K 线返回 0。
工作原理
K 线形态是根据柱体几何结构产生的短周期因果标签。它们本身并不预测收益,而是 标记犹豫、拒绝、吞没压力、多 K 线反转等结构,可与趋势、波动率或成交量背景 结合使用。
引擎在每根 K 线上计算:
当 \(C_t \ge O_t\) 时为阳线,当 \(C_t < O_t\) 时为阴线。 K 线保存在一个短环形缓冲区中;年龄 \(0\) 表示最新 K 线,年龄 \(1\) 表示 前一根,以此类推。
下文使用以下共享谓词:
\(\overline B\) 是环形缓冲区内最近最多五根 K 线的平均实体长度; \(\overline R\) 是同一窗口的平均全幅。
对于锤子线家族的形态,轻量级先行趋势判断会比较前收盘价与此前两个收盘价 的 SMA:
递推公式
将 \((O_t,H_t,L_t,C_t)\) 压入环形缓冲区。只有其中至少已有 3 根 K 线 时才进行检测。
首先要求 \(\mathrm{doji}(a)\)、\(\mathrm{doji}(b)\) 和 \(\mathrm{doji}(c)\) 同时成立。
- 若 \(\mathrm{mid}_b < \mathrm{mid}_a\) 且 \(\mathrm{mid}_b < \mathrm{mid}_c\),则输出 \(+100\)。
- 若 \(\mathrm{mid}_b > \mathrm{mid}_a\) 且 \(\mathrm{mid}_b > \mathrm{mid}_c\),则输出 \(-100\)。
- 否则输出 \(+100\)。
谓词不成立时输出 \(0\)。C++ 路径每次更新的复杂度为 \(O(1)\):使用固定大小 环形缓冲区,除少数几根 K 线外不重新扫描完整窗口。
实现说明
递推过程实现在 src/rtta/indicator.cpp 的 class CDLTriStar 中,并建立在共享的
CdlHistory 和 cdl:: 几何辅助函数之上。阈值采用适合流式计算的几何规则,
并非对 TA-Lib 每一张平均实体回看表逐行移植。
