主页 > imtoken中文版app > 听说MACD是技术指标之王?我们用Python查色
听说MACD是技术指标之王?我们用Python查色
介绍:
邢步兴系列帖子《量化小讲堂》通过实际案例,教初学者使用python进行量化投资,了解行业研究方向。 希望对大家有所帮助。
【历史文章汇总】点这里
经常有朋友问我一些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的定义,计算MACD并不复杂,几行Python代码就可以搞定:
其中MACD的计算只用到最后5行代码,前3行主要是导入数据和计算恢复价。 人生苦短,我用 Python。
头发当然短了,也用Python
通过这段代码,我们可以通过读取某只股票的K线数据,得到每条K线对应的MACD指标:
数据输入
数据输出
如果你想自己尝试上面的代码和数据,可以私信我获取。
02
如何使用 MACD
计算出MACD指标后,我们应该如何使用呢?
介绍一下MACD最常见的用法——“金叉死叉”。
仔细观察MACD的图形,我们会发现橙线(DIFF)和蓝线(DEA)相互交织,不断交叉,这些交点可以作为买入和卖出的信号。
橙色线(DIFF)和蓝色线(DEA)相互交叉
当橙线(DIFF)向上穿越蓝线(DEA)时,称为“金叉”,简称“金叉”,为买入信号。
比如下图出现金叉之后,确实是一路上涨。
当橙色线(DIFF)向下穿越蓝色线(DEA)时,称为“死亡交叉”,简称“死叉”,为卖出信号。
比如下图出现死叉后,股价也开始下跌。
金色十字架和死亡十字架必须交替出现在彼此旁边。 最常见的基于MACD的择时策略是选择金叉时买入,死叉时卖出。
沪深300 MACD时序表现
上图是沪深300某段时间的K线图。 红色部分表示买入金叉持股阶段,绿色部分表示卖出死叉做空阶段。
从图中看,红色部分确实以上涨为主,绿色部分确实是下跌。
从这点来看,MACD的时机把握能力让人忍不住打666。
看到这里,是不是有点动心,甚至准备尝试经营,从此走向人生的巅峰?
慢慢来。
在新华书店门前显眼的地方,摆着《股票大师》的书,通常会告诉你某个神奇的指标。
然后精心挑选几张行情图片来展示这个指标的买卖点有多么惊人,让你对这个指标有坚定的信心。
但是对于我们这些做量化投资的人来说,几张图是没有说服力的。 如果这不是大概率事件,而只是巧合呢?
想知道MACD金叉和死叉是否有效,不是光看几张图就可以了。
就是找出一只股票历史上所有的金叉和死叉,看它们之后的表现如何。 只有这样,我们才能有说服力。
02
MACD黄金交叉死叉表现
要统计一只股票历史上所有的金叉和死叉的表现,用行情软件人工统计是肯定不行的。 这时候就需要用到Python了。
我们稍微扩展一下用于计算 MACD 的 Python 代码:
MACD金叉死叉统计代码
通过上面的代码,可以找到一只股票历史上所有的金叉和死叉。 并且还计算了信号出现后第1、5、20个交易日股票的涨跌幅:
代码统计
有了这个结果,我们就可以综合评价金叉和死叉。
1 浦发银行MACD表现
先随便挑一只沪市代码数排名第一的浦发银行(sh60000)运行程序,看MACD在它上面的表现:
数据显示,浦发银行自1999年上市以来,共有194个金叉,金叉后一天、五天、二十天上涨的比例分别为: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表现:
我们统计了1990年至今约5000个交易日,A股市场4000多只股票历史上所有的金叉和死叉,信号总数约80万个,得到如下结果:
无论是金叉后上涨的概率,还是死叉后下跌的概率,都集中在50%左右,涨跌中值也接近于0%。
金叉和死叉不能预测未来的涨跌。
所以以后遇到所谓的神器指标,一定不要跟着别人走,一定要自己用代码和数据去验证。
没有代码验证,只能投入真金白银去试错。
4MACD的其他用途
当然,有的朋友可能会说,MACD还有很多其他的用处。 例如著名的顶部背离和底部背离。
顶背离
底部背离
顶部背离是指价格的峰值不断创新高,但MACD峰值却一路下跌,是卖出信号。
底部背离正好相反。 价格的峰值价格一路下跌,但MACD峰值不断创新高。 这是买入信号。
deviation的用法我也验证过,结论暂时保密。 对此有兴趣的可以留言,话多可以单独说。
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年才进入数字货币市场的,那时候市场火爆,没有时间详细制定策略。 我干脆把原来的股票和期货市场策略搬过来,有很好的回报。
再次印证了那句话:“与其提升自己的牌技,不如花时间寻找更弱的对手。”
本文用到的数据和代码都整理好了,需要的可以私信我获取。
当前代码
当前数据
邢不兴:Excel常用于量化投资,同事可能会打不过
邢不兴:【邢不兴|量化小讲系列45-实战】关于股票市值:99%的投资者都不知道的陷阱,你知道吗?
邢布布:【邢布布|量化小讲系列44-实战】历年10强基金第二年表现如何? Python告诉你答案
邢布布:【邢布布|量化小讲系列43-实战】:在量化投资中,K线还可以这样画(附K线代码)