1. 认识Hull Moving Average(HMA)指标
Hull Moving Average(简称HMA)是由澳大利亚数学家Alan Hull在2005年开发的技术指标。它本质上是一种经过优化的移动平均线,通过三重加权计算来减少传统移动平均线的滞后性。我刚开始接触量化交易时,发现普通SMA(简单移动平均)对价格变动的反应总是慢半拍,而EMA(指数移动平均)虽然有所改善,但仍然存在明显的滞后。直到尝试了HMA,才真正体会到什么叫做"又快又稳"的均线。
HMA的核心优势在于它能够:
- 快速响应价格变化:通过前半周期加权计算,对近期价格给予更高权重
- 有效过滤市场噪音:利用平方根周期平滑处理,减少虚假信号
- 保持曲线平滑:最终输出结果比普通WMA(加权移动平均)更加连贯
实际交易中,HMA特别适合捕捉中短期趋势。我记得2020年测试美股TSLA数据时,20日HMA比同期SMA提前2-3天发出转折信号,这在波动剧烈的科技股上尤其珍贵。不过要注意,HMA对周期参数非常敏感,后面我们会详细探讨参数选择的问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. HMA的数学原理与计算步骤
2.1 三层加权计算架构
HMA的计算过程就像制作一杯特调咖啡,需要分层次处理原料:
python复制# 第一层:半周期加权平均
WMA1 = WMA(close, period//2)
# 第二层:全周期加权平均
WMA2 = WMA(close, period)
# 第三层:差值平滑处理
HMA_raw = 2*WMA1 - WMA2
HMA_final = WMA(HMA_raw, int(np.sqrt(period)))
这个计算过程实际上是在进行三次信号处理:
- 先用半周期捕捉短期趋势
- 用全周期确定长期基准
- 最后通过平方根周期平滑过渡
2.2 为什么平方根周期最有效
经过多次回测发现,使用周期平方根作为最终平滑参数,能在响应速度和稳定性间取得最佳平衡。比如当设置period=16时:
- 传统方法可能直接用8周期平滑
- HMA采用√16=4周期平滑
- 实测显示4周期平滑能保留更多真实趋势信号
3. Python实现完整HMA交易系统
3.1 数据准备与指标计算
我们先导入必要的库
