摘要
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.cpp 的 class ElderThermometer 中实现。结果
字段为 ratio、hot,以及为兼容旧接口而保留名称的 range。
