听说MACD是技术指标之王?我们用Python来验验成色

Connor 欧易交易所 2022-11-16 240 0

作者 | 邢不行、助教林奇

经常有朋友在微信上问期货手续费计算我一些MACD这个技术指标相关的问题:

本文就全面的讲解一下MACD指标,用Python和全量的历史数据,看看它的表现到底如何期货手续费计算

01

什么是MACD

不管你是交易A股、美股、期货还是数字货币,大部分的行情软件都会将MACD指标 默认显示在指标的前几位期货手续费计算

例如下图,在常见的K线图下方有 两条曲线和一些 红或绿色的柱子,这个组合就是 MACD指标期货手续费计算

MACD指标

展开全文

根据MACD指标的定义期货手续费计算,它主要由 DIFF、 DEA和 MACD三部分组成:

DIFF是下图中的 橙线期货手续费计算,它是对K线 收盘价进行一系列的计算后得到:

DEA是下图中的 蓝线期货手续费计算,它是在 DIFF的基础上进一步计算得出:

用 橙线(DIFF)减去 蓝线(DEA)后,再 乘以2就能得到MACD指标了,也就是下图中 红色和绿色的柱子期货手续费计算

柱子的 长度就是MACD绝对值的大小,如果 MACD大于0,则为红色,如果 MACD小于0,则为绿色期货手续费计算

我们做量化交易的,不仅要在图上看到指标,还要将其计算出来,这样才方便之后得到相应的买点、卖点期货手续费计算

知道定义后要计算MACD并不复杂期货手续费计算,几行Python代码就能搞定:

其中计算MACD 仅用了最后5行代码,前面3行主要是导入数据及计算复权价期货手续费计算。人生苦短,我用Python。

当然期货手续费计算,头发苦短,也用Python

有了这个代码期货手续费计算,我们读取某股票的K线数据,就能得到其每根K线对应的MACD指标:

数据输入

数据输出

想要以上的代码和数据亲自尝试,可以扫描下方二维码或加我 微信xbx783,都是可以直接发给你的期货手续费计算

02

如何使用MACD

计算出MACD指标之后期货手续费计算,我们应该如何使用呢?

介绍一个MACD最常见的用法--“ 金叉和死叉”期货手续费计算

仔细观察MACD的图形,我们会发现, 橙线(DIFF)和 蓝线(DEA)纠缠在一起,互相不断交叉,这些 交叉点就可以作为买入和卖出的信号期货手续费计算

橙线(DIFF)和蓝线(DEA)相互交叉

当 橙线(DIFF)向上穿过 蓝线(DEA)时,被称为“ 黄金交叉”,简称“金叉”,这是一个 买入信号期货手续费计算

例如下图发生金叉后,确实一路上涨期货手续费计算

当 橙线(DIFF)向下穿过 蓝线(DEA)时,被称为“ 死亡交叉”,简称“死叉”,这是一个 卖出信号期货手续费计算

例如下图发生死叉后,股价也开始下跌期货手续费计算

金叉和死叉必定是 相邻交替出现,最常见基于MACD的择时策略就是选择在 金叉时买入、死叉时卖出期货手续费计算

沪深300MACD择时表现

上图是沪深300某段时间的K线图, 红色部分表示金叉买入, 持有指数的阶段, 绿色部分表示死叉卖出, 空仓的阶段期货手续费计算

从图中看, 红色部分确实主要在上涨,绿色部分也确实在下跌期货手续费计算

这样看来,MACD的择时能力, 让人不禁打出666期货手续费计算

看到这是不是有点心动了期货手续费计算,甚至准备试着操作,从此走向人生巅峰?

先别着急期货手续费计算

新华书店正面显眼处,摆放着"炒股大师"的书,通常也会告诉你某个 神奇的指标期货手续费计算

然后再 精挑细选出几张行情图片,展示这个指标的买点、卖点是多么的神奇,让你对这个指标深信不疑期货手续费计算

但是对于做量化投资的我们,几张图并不能让人信服期货手续费计算。 万一这并不是大概率事件,只是巧合呢?

想要知道MACD金叉、死叉是否有效,不是只看几张图就行的期货手续费计算

而是要把一只股票历史上 所有的金叉死叉都找出来,看看它们之后的表现到底怎么样期货手续费计算。这样才有说服力。

02

MACD金叉死叉表现

要统计一只股票历史上所有金叉、死叉的表现,人工对着行情软件去数肯定是不行的,此时就需要使用Python期货手续费计算

期货手续费计算我们把之前计算MACD的Python代码稍作扩展:

统计MACD金叉死叉的代码

通过上面的代码,就可以找到一只股票历史上所有的金叉、死叉期货手续费计算。并且还计算了信号发生1、5、20个交易日后股票的涨跌幅:

代码统计结果

有了这个结果就能全面的对金叉、死叉进行评估,如果你想亲自试试,可以扫描下方二维码或加我 微信xbx783获取代码和数据,都是可以直接发给你的期货手续费计算

1

浦发银行MACD表现

先随便挑一只股票期货手续费计算,上交所代码序号排列第一的浦发银行(sh60000),运行下程序看看MACD在它上面的表现:

数据显示,浦发银行从1999年上市至今一共出现过 194次金叉,在金叉之后的 1天、5天、20天出现上涨的比例分别是: 50.51%、48.45%、51.55%期货手续费计算

这...结果有点出乎意料啊期货手续费计算。出现金叉后,上涨的 概率都在50%左右...

和抛硬币没什么差别期货手续费计算

虽然本来也不指望金叉后100%上涨期货手续费计算,但概率怎么说也要有60%吧?

要不然干脆来个30%也行,这样当反指用就是70%的胜率期货手续费计算。 50%是最尴尬的概率了,反过来还是50%

而且194次金叉之后1、5、20个交易日的涨幅中位数分别是0.08%、-0.09%、0.39%期货手续费计算

只有20日的涨跌幅中值表现稍好,但算一下 这个年化收益也就和余额宝差不多期货手续费计算

再来看死叉期货手续费计算。出现死叉后,下跌的概率也基本上是50%左右,涨跌幅中值也接近0%,也是一个 没有任何意义的指标。

以上只是简单的统计期货手续费计算,我们再看看严格的按照 金叉买入、死叉卖出浦发银行,最终的资金曲线会怎么样呢?

我们采用大部分行情软件MACD的默认参数(12,26,9)期货手续费计算,设置手续费和印花税,进行回测,结果如下:

橙线是浦发银行的原始表现,蓝线是MACD择时策略在浦发银行上的表现期货手续费计算

采用MACD择时买卖浦发银行,年化收益率只有 3.5%,历时 13年资产只涨了61%,而浦发银行本身的股价都翻了 1.9倍期货手续费计算

可以看到使用MACD择时浦发银行的效果很差,还不如直接买入持有期货手续费计算

没想到在各大行情软件都处于C位的人气指标期货手续费计算,表现居然这么差?

是不是浦发银行刚好不适合MACD呢期货手续费计算

2

贵州茅台MACD表现

那我们换个股票,来看看MACD在贵州茅台上的表现期货手续费计算

把之前的Python程序的输入数据改成贵州茅台期货手续费计算,直接运行即可得出结论:

由图中可见,在发生金叉之后,茅台的上涨概率比浦发银行高了不少,并且涨跌幅中值也有所提升,很不错期货手续费计算

但死叉之后的表现就不尽如人意了期货手续费计算。20日后下跌的概率只有43%,中位数上涨0.92%。

这... 明明是个看涨信号啊期货手续费计算

如果对茅台严格的按照金叉买入、死叉卖出进行操作期货手续费计算,表现又如何呢?

期货手续费计算我们同样采用默认的MACD参数得到如下结果:

如果从2007年投入1元,到现在已经翻了 8倍了, 年化率高达16.33%,看起来好像很不错期货手续费计算

但如果期货手续费计算我们和茅台本身的价格对比一下:

上图中的蓝线是MACD择时的表现,橙线是茅台本身的表现,这么一对比, MACD择时的表现就有点可笑了期货手续费计算

茅台本身的年化收益率高达 28.69%,共翻了32.5倍,但是经过MACD择时的一番神操作,只翻了8倍 期货手续费计算

这大概就是传说中的一顿操作猛如虎,一看收益2.5%吧期货手续费计算

MACD在茅台上的表现依旧不好期货手续费计算,难道是MACD恰好在这两只股票上都不适用?

3

所有股票MACD表现

这次我们玩得狠一点, 统计一下A股所有股票的MACD表现,看看结果到底怎么样期货手续费计算

将之前的Python代码稍作修改就能统计所有股票的MACD表现:

如果你对这个数据和代码感兴趣的话,可以扫描下方二维码或加我 微信xbx783,都是可以直接发给你的期货手续费计算

我们统计了 1990年至今大约 5000个交易日期货手续费计算,A股市场上 4000多只股票历史上所有的金叉和死叉,共计约 80万次信号,得到如下结果:

不管是金叉后上涨的概率,还是死叉后下跌的概率, 都集中在50%左右,涨跌幅中值也都趋近于0%期货手续费计算

金叉、死叉 并不能预测未来的涨跌期货手续费计算

所以之后大家如果遇到所谓神器的指标,千万不要人云亦云, 一定要亲自用代码和数据去验证下期货手续费计算

不用代码验证,就只能 投入真金白银去试错了期货手续费计算

4

MACD的其期货手续费计算他用法

当然有的朋友可能会说MACD还有很多其他用法期货手续费计算。比如著名的顶背离、底背离。

顶背离

底背离

顶背离指 价格峰值不断创新高,但是 MACD峰值却一路下跌,这是一个卖出信号期货手续费计算

底背离刚好相反,价格峰值 一路下跌, MACD峰值却不断新高,这是一个买入信号期货手续费计算

背离的用法我也验证过,结论暂时保密期货手续费计算。对此感兴趣的可以留言,多的话之后可以再单独讲讲。

MACD很多其他的用法,想测试的也可以在评论区留言,之后可能可以用程序验证一下它是否有效期货手续费计算

03

降维打击

那MACD指标真的已经不能用了吗期货手续费计算

熟悉期货手续费计算我的朋友知道我常常会说一句话:

“ 与其花时间提高牌技,我更愿意花时间寻找对手更弱的牌局期货手续费计算。”

这句话的意思是,不要去高手扎堆的地方,要主动去找一些竞争对手更弱的环境期货手续费计算

我给大家举一个交易上的例子期货手续费计算

华尔街日报统计的数据显示,在美国 90%以上的主动基金都没能跑赢大盘指数期货手续费计算。美国金融市场发达,基金经理骚操作也多,但还是败给了指数基金。

不过这只是美国的情况,中国可不太一样期货手续费计算

我之前发过一条朋友圈,里面有详细是数据指出, A股的基金经理是可以显著跑赢大盘指数的期货手续费计算

那是A股的基金经理更厉害吗?显然目前还不是期货手续费计算

原因是美股市场更成熟,高手如云,是 一个更高端的牌局期货手续费计算

而很多人抱怨A股混乱、不成熟、散户多,但这其实是好事期货手续费计算。这意味着市场上有更多低水平的投资者,是 一个对手更弱的牌局。

A股散户持仓占比

其实不光是交易,在平时的工作和生活中,换一个对手更弱的牌局会让你更加轻松期货手续费计算

这句话放在MACD指标上也一样期货手续费计算

比特币历史行情图

上图是比特币的历史行情图,以比特币为代表的数字货币市场,其实是 比A股更不成熟的市场,是 一个对手更更弱的牌局期货手续费计算

在这个市场上,MACD指标就突然显得有效了起来期货手续费计算。我们使用比特币2017年9月至今的4小时K线数据,用Python统计其金叉死叉后的表现:

出现金叉后, 上涨的概率和 涨跌幅的中值比在A股的表现都要 好期货手续费计算

再来看严格按照MACD金叉、死叉进行买卖的表现期货手续费计算,依旧使用在股市默认的参数,扣除手续费,结果如下:

橙线是比特币原始的价格,蓝色的线是MACD择时在比特币上的表现期货手续费计算

原始的比特币价格,从2017年9月至今年化收益率是40.07%,而 MACD择时的年化收益率为57.79%,提高17个百分点期货手续费计算

在风险方面,原始比特币价格的 最大回撤高达84.09%,而MACD择时后 最大回撤显著降低为36.97%期货手续费计算

这意味着MACD应用在比特币上可以 显著地提高收益并且 降低风险,效果显著期货手续费计算

04

一点感悟

数字货币还是一个相对原始的市场,股市里很多已经被无效的策略,在数字货币市场仍然 有用期货手续费计算

我2017年刚进入数字货币市场,当时行情火热,来不及细细开发策略,就是把原来股票、期货市场的策略简单的搬过来, 就有很好的收益期货手续费计算

再次印证了那句话:“ 与其提高牌技,我更愿意花时间寻找对手更弱的牌局期货手续费计算。”

本文中用到的数据和代码都已经整理好了,有需要的可以扫描下方二维码或加我的 微信xbx783,都是可以直接发给你的期货手续费计算

05

后记

文章的最后,和大家分享一点 量化投资的心得期货手续费计算

很多人问我小白如何开始 学习量化投资,有什么可以 书单推荐期货手续费计算

我的建议是 千万不要直接找本书来看期货手续费计算

你找本 编程书看,那跟着敲完“Hello World”就结束了;你找本 数学书看,那看到第七页的公式就睡着了期货手续费计算

更好的学习方式是做实际的项目,在 实践中学习量化策略期货手续费计算

研报就是很好的量化实践项目期货手续费计算

一篇研报就是一个策略,作者都是年薪百万的高学历券商分析师,你要做的就是 读懂策略研报,并用代码实现期货手续费计算

在此期间什么不会学什么,哪里不会点哪里,抱着 解决问题的心态去学习,事半功倍期货手续费计算

熟读唐诗三百首,不会作诗也会吟期货手续费计算

那么哪里可以 获取研报呢?

你可以扫描下方二维码或加我的 微信xbx783,我这里有分门别类 几万份研报,还会 实时更新期货手续费计算

我会区分难度, 精选之后发给你期货手续费计算

加我 微信xbx783后,也可以 交流量化投资相关问题,我比较忙,回复的比较慢,但是看到的都会回复期货手续费计算

聊的开心,聊得有缘,很多量化的数据、资料都是可以 送给你的期货手续费计算

也可以翻翻我 朋友圈的内容,很多 量化干货期货手续费计算。一些不会公开发的内容,都会在朋友圈说。

联系作者

评论