Py学习  »  Python

Python量化策略:基于Hull移动平均线和SuperTrend指标的择时策略

灵度智能 • 3 月前 • 120 次点击  

免责声明:本文所有内容‬仅用于交流学习‬,不构成任何投资建议!投资有风险,入市需谨慎!

策略介绍


Hull 移动平均线(HMA)


Hull 移动平均线由澳大利亚数学家艾伦·赫尔(Alan Hull)设计,旨在减少传统移动平均线的滞后性,同时保持曲线平滑。其核心原理是通过加权计算和平方根周期来提升响应速度。计算步骤如下:


  • 计算收盘价的加权移动平均(WMA),分别取半周期(周期/2)和全周期。

  • 利用公式:差值 = 2 × WMA(半周期) − WMA(全周期),得到初步序列。

  • 对上述序列再取WMA,周期为平方根值(如全周期20,则取√20≈4.47,舍入为4)。


HMA能快速捕捉价格趋势转折,减少虚假信号,常用于判断多空转换点。当价格上穿HMA时,可能预示上涨趋势;下穿则可能暗示下跌。


SuperTrend 指标


SuperTrend 是一种基于平均真实波幅(ATR)的趋势跟踪指标,通过动态计算上下轨来识别市场方向。其计算过程如下:


  • 确定中轨:通常取收盘价的简单移动平均(SMA)或最高最低均价。

  • 计算上下轨:

    • 上轨 = 中轨 + 倍数 × ATR

    • 下轨 = 中轨 − 倍数 × ATR

    • 其中倍数常取2-3,ATR周期一般为10-14。

  • 生成信号:当价格低于上轨时,指标显示为下轨值,标识为上涨趋势(通常用绿色线);当价格高于下轨时,显示为上轨值,标识为下跌趋势(红色线)。


SuperTrend 直观展示趋势强弱,能有效过滤盘整行情,适用于趋势跟踪策略。


策略开发:HMA与SuperTrend结合


结合两者优势,可构建一个趋势跟随与过滤共振的策略:


入场条件:

  • 做多:HMA向上拐头且价格突破SuperTrend上轨(由红转绿),确认上升趋势启动。

  • 做空:HMA向下拐头且价格跌破SuperTrend下轨(由绿转红),确认下降趋势启动。


出场条件:

  • 多头持仓中,若价格跌破SuperTrend下轨或HMA拐头向下,则平仓。

  • 空头持仓中,若价格突破SuperTrend上轨或HMA拐头向上,则平仓。


风险控制:

  • 使用ATR动态设置止损,如多单止损置于入场价下方1.5倍ATR处。

  • 可结合时间周期过滤(如仅交易日线级别信号),避免短时噪音。


该策略通过HMA提前感知趋势变化,SuperTrend确认趋势强度,从而提高信号可靠性。回测需优化参数(如HMA周期、SuperTrend倍数),并注意在震荡市中可能连续止损,建议辅以波动率过滤或仓位管理规则。


策略实现


【 扫描文末二维码加入星球获取完整源码 


Hull 移动平均线计算



SuperTrend 指标计算



策略回测



回测效果


经过 25 年的回测(2000 年 1 月至 2025 年 12 月),策略表现如下:


HMA + SuperTrend 策略:

  • 总收益率:1889%

  • 最大回撤:47%

  • 总交易次数:54 次

  • 胜率:81%

  • 盈亏比:7.90


买入持有策略:

  • 总收益率:1289%

  • 最大回撤:55%


策略不仅在收益率上超越了买入持有,还降低了最大回撤。更重要的是,25 年间只交易了 54 次,平均每年不到 3 次,这种低频交易大大降低了交易成本和操作难度。



▌关于我们

我们致力于人工智能、量化交易领域前沿研究,分享前沿论文、模型代码、策略实现。如有相关需求,请私信与我们联系。

▌商务合作

请加微信“LingDuTech163”,或公众号后台私信“联系方式”。


关注【灵度智能】公众号,获取更多AI资讯。




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/191762