MACD 是量化交易的著名技术指标,它利用收盘价的短期(常用为 12 日)指数移动平均线(EMA)与长期(常用为 26 日)指数移动平均线 (EMA) 之间的聚合与分离状况,对买进、卖出时机作出研判。

MACD 计算方法:

短线 EMA:短线的指数移动平均,移动窗口通常取 12;

EMA=q* 当前价格 +(1-q)* EMA[-1]

其中 q 是平滑系数,q=2/(移动周期 +1)。

后续的 EMA 都是这样计算,只是移动周期取值不同。

长线 EMA:长线的指数移动平均,移动窗口通常取 26;

长短线的离差 DIFF:短线 EMA- 长线 EMA。

离差平均值 DEA:DIFF 的指数移动平均,移动窗口通常取 9;

MACD:2 *(DIFF - DEA)

下面介绍 MACD 背离买卖策略:

金叉:DIFF 上穿 DEA

死叉:DIFF 下穿 DEA

底背离:股价创新低但 DIFF 没有新低。把最近一次死叉到金叉的区间称为区间 1,把再前一次死叉到金叉的区间称为区间 2。区间 1 的最低股价小于区间 2 的最低股价,区间 1 的最低 DIFF 大于区间 2 的最低 DIFF,此时的金叉作为买入信号。

如下图箭头处,股票价格创新低,dif 指标背离式走高,出现底背离

..

顶背离:股价创新高但 DIFF 没有新高。把最近一次金叉到死叉的区间称为区间 3,把再前一次金叉到死叉的区间称为区间 4。区间 3 的最高股价大于区间 4 的最高股价,区间 3 的最高 DIFF 小于区间 4 的最高 DIFF,此时的死叉作为卖出信号。

如下图箭头处,股票价格还在创新高,但 dif 指标背离式走低,出现顶背离。

..

下面我们用 SPL 量化工作台(SPL量化工作台)来实现这个策略。

第一步:查看股票数据

打开页面, 在左上角输入了 "300750"(宁德时代),立即就能看到日 K 线数据:

..

左侧可以勾选需要显示的指标,尝试选择开盘、收盘、最高、最低、成交量等基本数据。这里可以自由选择时间范围。可以选择 2021 年 10 月至 2022 年 10 月的数据,因为宁德时代在这个时间区间有过一次比较典型的顶背离和底背离事件,这样回测可以验证一下。

第二步:计算 MACD 指标

从前面对 MACD 业务逻辑的描述可以看出,这个策略并不简单,确实用 Python 等程序语言写出来的代码都会很长,一般缺乏程序设计能力的投资者很难自己做出来。不过,SPL 量化工作台内置了相关指标,可以直接使用,就不需要编写复杂的代码了。

计算顶底背离时,需要使用回测区间前面多个交易的数据,通常推荐是用前200个交易日,这才能确保 EMA 充分收敛,且能捕捉到前期的价格波动趋势,所以这里先设置提前读 200 天的数据:

..

点击指标选用,勾选出 MACD 背离策略需要的三个指标:

..

然后,指标类型下拉框中就会出现这三个内置指标:

..

选择 MACD- 异同移动平均线,做如下配置,可以看到指标返回三个值:

..

然后再选择 GDX- 金叉死叉信号,做如下定义:

..

定义完上述指标,可以看到数据框中的显示:

..

第三步:生成背离信号

选择DVG- 顶底背离定义顶底背离信号:

..

..

到这里,可以用统计图对比看一下 DIF,收盘价,DVG:

..

从图上可以看出,2021 年 10 月 - 2021 年 12 月期间,股价走势从 500 元附近持续上涨至 692 元(历史新高);股价创新高时,DIF 未能同步新高,且高点逐级下移(顶背离)。

2022 年 9 月 - 2022 年 10 月期间,股价走势从 400 元跌至 353 元(阶段新低);股价创新低时,DIF 低点明显高于前低(2022 年 4 月低点)(底背离)。

第四步:回测

有了上述指标,我们来定义策略,这里我们选择提前读 200 天的数据,回测时间区间选择 2021 年全年,按如下方式定义策略:

..

提交后可以发现,系统在 21 年 3 月买入一笔,12 月抛出,完美地利用了顶底背离现象,收益率高达 105%:

..

SPL 量化工作台为 MACD 顶底背离策略还提供了组合好的单个指标,如果对 DIF/DEA 等中间信息不关心的话,也可以用一个指标直接算出:

选用DVGMACD-MACD 顶底背离信号

..

在指标类型下拉框中选择DVGMACD-MACD 顶底背离信号,数据列和中长短周期均用缺省值,DVG 输出列填DVGMACD

..

提交后,在买卖信号列下拉框中选择DVGMACD,买入股数100最大持仓数1,买卖价格选择昨日收盘价

..

第五步:多票回测

SPL 量化工作台还提供了同时回测多只股票的功能:

..

在弹出框中输入多只股票代码,用英文逗号分隔:

..

点击开始回测按钮后,可以在数据显示框里同时看到每只股票的回测结果:

..

此时,右边的回测结果是这几只股票的合计值。需要注意的是,这里的占用资金并不是简单的相加,而是整个回测时间区间里曾经被占用的最大资金数。

如果发现其中某只股票的结果不如期望,想查看一下明细的买卖记录,可以在股票代码下拉框里切换选择:

..

这时候,中间的数据且就会显示出单票时的买卖记录和持仓情况。

..

如果想回到前面的多只股票回测结果显示界面,点左下角的多票结果按钮:

..

最后总结

SPL 量化工作台上的实现 MACD 背离策略的总结:

优点

  1. MACD 指标内置,省去了手动计算的麻烦

  2. 画图功能能清晰展示背离现象

注意事项

  1. 背离信号可能有滞后性,建议结合其他指标使用

  2. 在强势单边行情中,背离信号可能失效

  3. 建议先用小资金测试策略实际表现

新手建议

  1. 先用 "画图" 功能观察历史上典型的背离案例

  2. 回测时注意不同市场环境下的表现(牛市、熊市、震荡市)

MACD 顶底背离是一种经典策略,通过 SPL 量化工作台,普通投资者也能轻松实现并验证这一策略。工作台的即时反馈特性让策略优化变得非常高效,值得量化交易初学者尝试。

Logo

专业量化交易与投资者大本营

更多推荐