Alligator

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

摘要

Alligator 是 RTTA 对 Bill Williams 鳄鱼线的流式实现:它由中间价的三条 平移平滑移动平均线——颚线齿线唇线——组成。随着趋势与盘整 交替出现,三条线会像鳄鱼的嘴一样张开和闭合。

更新 API

result = rtta.Alligator(
    jaw_window=13, teeth_window=8, lips_window=5,
    jaw_shift=8, teeth_shift=5, lips_shift=3,
    fillna=True,
).update(high, low)
参数 默认值 含义
jaw_window 13 颚线(蓝色)的 SMMA 周期
teeth_window 8 齿线(红色)的 SMMA 周期
lips_window 5 唇线(绿色)的 SMMA 周期
jaw_shift 8 颚线的前移量(以延迟的 K 线数实现)
teeth_shift 5 齿线的延迟量
lips_shift 3 唇线的延迟量
fillna True 若为 False,只要任一线仍处在平移预热期并为 NaN,便返回 NaN

update(high, low) 返回 jawteethlipsadvance(...) 更新状态;last() 返回缓存的结果。

工作原理

中间价 \(m_t=(h_t+l_t)/2\) 分别经过三条独立的 Wilder SMMA(RMA)平滑, 各自使用不同的周期。在传统图表中,这些线会被绘制到未来(向前平移)。在因果的 流式 API 中,相同的前移效果由等长的延迟缓冲区实现:今天报告的是 shift 根 K 线以前的 SMMA 值。这与完整图表把该 SMMA 前移后对齐到当前 K 线 的显示方式一致。

当三条线相互缠绕(嘴巴闭合)时,“鳄鱼正在睡觉”,市场处于区间或震荡状态。 当三条线按顺序展开时,嘴巴张开,趋势处于活跃状态。 GatorOscillator 会量化这些线之间的距离。

递推公式

\[m_t = \frac{h_t + l_t}{2}\]

令 \(\operatorname{SMMA}_n\) 表示 SmoothedMovingAverage(先用 SMA 初始化, 再以 \(\alpha=1/n\) 进行 Wilder 递推)。令 \(\Delta_k\) 表示 \(k\) 根 K 线的 因果延迟(ShiftBuffer 在收到 \(k\) 个样本前返回 NaN,之后返回 \(k\) 根 K 线以前的值)。

\[jaw_t = \Delta_{\texttt{jaw\_shift}}\big(\operatorname{SMMA}_{\texttt{jaw\_window}}(m)\big)_t\]
\[teeth_t = \Delta_{\texttt{teeth\_shift}}\big(\operatorname{SMMA}_{\texttt{teeth\_window}}(m)\big)_t\]
\[lips_t = \Delta_{\texttt{lips\_shift}}\big(\operatorname{SMMA}_{\texttt{lips\_window}}(m)\big)_t\]

默认配置为:颚线 \(13/8\)、齿线 \(8/5\)、唇线 \(5/3\)。

fillna=False 且三条延迟线中的任一条仍为 NaN 时,返回结构体的所有字段 均为 NaN。

实现说明

参考资料