PTrade基本指标回测之MACD

李斯托拉尼
李斯托拉尼 大道无形我有型

1 人点赞了该文章 · 325 浏览

MACD在国内,一直名气不小,有“指标之王”的美誉,是在股票、期货和其他金融市场中被广泛使用的动量趋势跟踪技术指标,全名叫做Moving Average Convergence Divergence,翻译过来就是“移动平均收敛/发散指标”。它通过两条移动平均线的收敛与发散来判断市场动能的强弱和趋势的转变。

MACD有两根线,一根是快线,另一根是慢线。快线就像一个急性子的小伙子,反应比较快;慢线就像个慢性子的大叔,总是慢吞吞的。当这个急性子的小伙子跑得比慢性子的大叔快的时候,有些投资顾问可能会说:“嘿,市场有点热哦,快来开户吧!”相反,如果慢性子的大叔反而跑得更快,他们就会要你小心点,市场可能要“凉快”一阵子,一不小心就关灯吃面了。

除两根线之外,MACD还有一个柱状图,叫做MACD柱。这个柱状图就像温度计,红色代表热,绿色代表冷。当MACD柱从下往上穿过中心线变成红色的时候,就像是股市的夏天来了;而当它从上往下穿过中心线变成绿色的时候,就像是股市的冬天来了。
一直以来,许多人通过MACD指标来判断股票市场的温度,让我们知道是该“穿短袖”还是“穿棉袄”。但它的准确度到底如何?究竟是否能够帮助我们做出更明智的投资决策?我们不妨利用PTrade量化平台进行一次简单的测试。

在不考虑MACD进阶应用(即底背离/顶背离)的情况下,利用MACD基本指标进行择时交易,通常只需要考虑以下三种关系:

  • 快线与慢线的关系:即金叉/死叉,同样也可看作MACD柱与零轴的关系
  • 快线(DIFF)与零轴的关系
  • 慢线(DEA)与零轴的关系

基于以上关系,我们可以把买入信号和卖出信号做拆分和枚举,并且使用沪深300指数ETF作为测试标的,通过PTrade编写策略进行回测,然后观察过去5年内通过MACD指标对指数择时交易的有效性。当然你也可以采用其他中小盘指数或个股作为测试标的,本文不做赘述。

确定好标的后,首先需要在PTrade量化模块中构建MACD指标。好在PTrade已经内置了TALIB库,我们无需对MACD公式进行完整重写,即可快速构建MACD函数,示例如下:
def MACD_CN(close, fastperiod, slowperiod, signalperiod):
    macdDIFF, macdDEA, macd = tl.MACDEXT(close, fastperiod=fastperiod, fastmatype=1, slowperiod=slowperiod, slowmatype=1, signalperiod=signalperiod, signalmatype=1)
    macd = macd * 2
    return macdDIFF, macdDEA, macd
指标定义完成后,即可利用PTrade标准策略结构,实现一个相对简单的交易策略并且进行回测。策略所需的接口规范,可以参见PTrade帮助文档。

测试标的:510300

测试周期:2019.03.01-2024.03.01

首先我们测试MACD日线出现金叉(即DIFF大于DEA)次日全仓买入300ETF,出现死叉(即DIFF小于DEA)次日卖出的基本表现,回测情况非常不尽人意:


不难看出,策略在5年内的绝大多数时间均无法跑赢指数。故大家虽熟知金叉买、死叉卖的原理,但据此操作并不是好的交易选择。

然后,我们把卖出条件暂时固定为MACD死叉卖出,单独测试其他买入条件,观察不同的关系组合下,策略绩效是否有改善可能。结果略有惊喜:

  • 沪深300:DIF快线突破零轴买入,MACD死叉卖出


  • 沪深300:DEA慢线突破零轴买入,MACD死叉卖出


可看出其他两种买入条件,对应死叉卖出策略下,绩效均有明显改善,且扣除交易费率后仍能长期匹敌指数基准收益,已是难能可贵。

依此类推,再来看看其他买卖条件组合的表现,如下:

  • 将快线跌破零轴作为卖出条件时,三种买入策略组合表现

  • 将慢线跌破零轴作为卖出条件时,三种买入策略组合表现


综合来看,在标准MACD参数下,过去五年期间沪深300指数MACD基本指标组合中:

快线上穿零轴买入表现最优,金叉买入最差;

死叉卖出表现最优,慢线跌破零轴卖出最差。


以上是本期全部内容,欢迎一起讨论交流,共同进步。下一期计划分享一个依据北上资金指标进行选股择时策略,也是笔者长期跟踪的经典策略之一,敬请期待:D


发布于 2024-03-20 13:12

免责声明:

本文由 李斯托拉尼 原创发布于 百果量化交流平台 ,著作权归作者所有。

登录一下,更多精彩内容等你发现,贡献精彩回答,参与评论互动

登录! 还没有账号?去注册

cnxialg
2024-06-17 12:02
感谢文章很受益,有策略代码吗。能分享一下!