HMA(Hull 移动平均线)的计算方法
直接答案
Hull 移动平均线(HMA)是通过对同一价格序列使用主周期长度和一个推导出的“半周期”长度,计算**加权移动平均线(WMA)**得出的。一个典型的定义如下:
- 设 n 为 HMA 的周期长度。
- 计算价格序列的 WMA(n/2)。
- 计算价格序列的 WMA(n)。
- 构建一个中间序列:
- 2 · WMA(n/2) − WMA(n)
- 最后,使用长度为 √n 的 WMA 对该中间序列进行平滑处理:
HMA(n) = WMA( √n, 2 · WMA(n/2) − WMA(n) )
这得到的平均值旨在比单一移动平均线反应更快,同时减少部分滞后。
机制与定义
要解释该公式的运作方式,最好将稳定机制(数学结构)与可变条件(输入选择方式和实际细节处理)区分开来。
1) 输入项
- 价格序列:一系列数据点(例如,每根K线的收盘价)。HMA 是定义在序列上的,而不是单个价格上。
- 周期长度 n:一个正数,用于控制平滑度和响应速度。
2) 关键构建模块:加权移动平均线(WMA)
WMA 是一种移动平均线,其中较新的观测值比旧的观测值赋予更高的权重。对于选定的长度 L,在时间 t 的 WMA 可概念性地表示为:
- WMA(L) 在 t 时刻 = 以 t 结束的最近 L 个价格点的加权平均值
确切的加权方案通常是线性的(权重随新近程度递增),但你必须在整个 HMA 计算过程中使用一致的 WMA 定义。
3) HMA 的数据流程
HMA 使用三个阶段:
阶段 A:半周期长度平滑
- 计算 WMA(n/2)。由于使用的数据点较少(平滑度较低),它通常比 WMA(n) 响应更快。
阶段 B:趋势整形组合
- 将半周期长度平滑与全周期长度平滑结合:
- 2 · WMA(n/2) − WMA(n)
- 这种“先差值再缩放”的结构旨在通过对比一个较快的平均值(半周期)和一个较慢的平均值(全周期)来调整滞后。
阶段 C:使用 √n 进行最终平滑
- 再次应用 WMA,但作用于阶段 B 的中间序列,使用长度 √n。
- 由于当 n>1 时 √n 小于 n,这种最终平滑试图在保持结果响应性的同时抑制噪声。
4) 必须明确的实际假设
由于公式中包含 n/2 和 √n,你需要对非整数周期长度有确定的处理规则:
- 如果你的平台要求 WMA 使用整数周期,你必须决定如何对 n/2 和 √n 进行取整(例如,向下取整、向上取整或四舍五入)。
- 如果 n 很小,√n 可能会变成非常小的整数,导致最终平滑效果减弱,输出结果更锯齿状。
可验证或可复现的示例
以下是自包含的示例说明(不假设实时价格)。你可以使用任何数值价格序列复现它。
示例设置
- 选择周期长度 n = 16。
- 那么:
- n/2 = 8
- √n = 4
- 选择一个公认的 WMA 定义(例如,线性权重 1..L,或你的计算器使用的任何一致方案)。
- 设 P[t] 为 t 时刻的价格。
分步计算(概念性)
在每个有足够历史数据的时刻 t:
- 计算 A[t] = P 的 WMA(8)(以 t 结束的最近 8 个价格)。
- 计算 B[t] = P 的 WMA(16)(以 t 结束的最近 16 个价格)。
- 构建中间序列:
- C[t] = 2 · A[t] − B[t]
- 计算最终 HMA:
- HMA[t] = C 的 WMA(4)(以 t 结束的最近 4 个 C 值)。
需独立验证的内容
- 确认你的 HMA 计算器遵循相同的结构:WMA(n/2) 和 WMA(n) 组合为 2·WMA(n/2) − WMA(n),然后用 WMA(√n) 进行平滑。
- 确认它在 n/2 和 √n 为非整数时如何取整。
- 确认它对正确的序列应用了 WMA(前两个 WMA 作用于价格;最终 WMA 作用于中间 C 序列)。
局限性与风险(可检查的计算失败)
HMA 可以正确计算,但如果忽略机制和数据约束,解释仍可能失败。主要局限包括:
1) 起始阶段的边缘效应
在至少有 n 个先前数据点之前,无法计算 WMA(n);在有足够的中间值之前,也无法计算最终的 WMA(√n)。因此:
- 早期的 HMA 值可能缺失、延迟,或基于较短的有效历史,具体取决于实现方式。
2) 非整数周期处理会改变结果
如果一个平台对 n/2 或 √n 的整数转换方式不同,HMA 值可能会明显不同。这是在比较两个“使用 HMA”的图表时常见的失败模式,但取整规则不同。
3) WMA 定义必须匹配
WMA 不仅仅是“某种加权平均”。如果一个工具使用线性权重,而另一个使用不同的加权方案,即使使用相同的 n 和价格序列,HMA 输出也会不同。
4) 对噪声输入和时间分辨率的敏感性
由于 HMA 是应用于序列的平滑方法,其外观取决于:
- 选择的价格类型(例如,收盘价 vs 其他序列),以及
- 数据间隔(K线大小)。
某一时间分辨率下的历史模式并不能保证在另一分辨率下有类似表现。
验证与后续提问
为独立验证你的理解并避免不匹配:
- 从一个与 WMA( √n, 2·WMA(n/2) − WMA(n) ) 匹配的 HMA 书面公式开始。
- 明确你的 n、你的 WMA 加权方案,以及你的 n/2 和 √n 的取整规则。
- 在一个小的、手动选择的数值序列上重新计算 HMA,并与计算器结果比较。
如果你的结果不同,最有用的下一个问题是:该计算器是否对小数周期使用相同的 WMA 加权方案和取整规则?
你也可以研究改变 n 如何影响滞后和平滑度,但应将其视为平滑机制的属性——而不是未来结果的独立指示。