Elder 温度计(ElderThermometer)

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

摘要

ElderThermometer 衡量当前 K 线向前一根 K 线最高价或最低价之外延伸了多少。 它返回原始温度、温度与其 EMA(默认 22 期)的比值,以及温度高于该均值时的 标志。

更新 API

result = rtta.ElderThermometer(fillna=True).update(high, low)
result = rtta.ElderThermometer(window=22, fillna=True).update(high, low)
# result.ratio, result.hot, result.range

仅传 fillna 的重载保留了原构造接口;window 控制温度 EMA 的周期。 若 high < low,实现会先交换二者。

工作原理

Elder 温度计衡量的是价格区间向外扩张的程度,并非当前 K 线普通的最高价— 最低价振幅,也不是今日振幅与昨日振幅之比。更高的最高价形成向上延伸,更低的 最低价形成向下延伸;完全位于前一根 K 线内部的 K 线温度为零。

递推公式

对 \(t\ge1\):

\[T_t=\max(H_t-H_{t-1},\;L_{t-1}-L_t,\;0).\]

令 \(A_t=EMA_n(T_t)\),默认 \(n=22\),则:

\[ratio_t=\frac{T_t}{A_t},\qquad hot_t=1_{\{T_t>A_t\}}.\]

为保持 API 兼容,原字段名 range 继续保留,但其中存放的是向外延伸温度 \(T_t\),而不是 \(H_t-L_t\)。

第一根 K 线没有可比较的前一最高价和最低价。fillna=True 时三个字段均返回 0;fillna=False 时均返回 NaN。严格模式要取得 window 个温度观测后 才返回数值,因此共需 window + 1 根 K 线。

实现说明

递推过程在 src/rtta/indicator.cppclass ElderThermometer 中实现。结果 字段为 ratiohot,以及为兼容旧接口而保留名称的 range

参考资料