Hilbert 正弦波(HilbertSineWave)

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

摘要

HilbertSineWave 是 RTTA 对由主导周期相位产生的 Hilbert 正弦波与超前正弦波的流式实现(TA-Lib HT_SINE)。两条波形组成周期振荡器,其交叉可用于识别周期转折。

更新 API

result = rtta.HilbertSineWave(fillna=True).update(value)
参数 默认值 含义
fillna True 若为 False,超过 63 个样本的回看期之前返回 NaN

update(...) 返回:

其中 \(\phi_t\) 是以度为单位的主导周期相位。advance(value) 更新状态;last() 返回缓存的结果。

工作原理

HilbertDominantCyclePhase 产生相位 \(\phi_t\) 后,通过正弦函数映射可得到 \([-1,1]\) 范围内的标准化周期波形。超前正弦波向前移动 \(45^\circ\),使正弦波与超前正弦波的交叉早于纯正弦波的波峰和波谷出现——TA-Lib / Ehlers 把这些交叉用作周期模式的择时事件(HilbertTrendMode 也会使用它们)。

由于相位来自自适应周期,当估计周期长度变化时,正弦波也会相应拉伸或压缩。

递推公式

令 \(\phi_t\) 为共用引擎给出的主导周期相位(角度制)。使用 deg2rad = 1/rad2degrad2deg = 45/\operatorname{atan}(1) 转换:

\[sine_t = \sin(\phi_t \cdot \texttt{deg2rad})\]
\[lead\_sine_t = \sin\big((\phi_t + 45)\cdot \texttt{deg2rad}\big)\]

fillna=False 时,在处理超过 63 个样本之前,两个字段均为 NaN。

实现说明

参考资料