Py学习  »  Python

用python找出400多万次KDJ金叉死叉,胜率有多高?附代码

经管之家 • 1 年前 • 302 次点击  


这是邢不行第 90 期量化小讲堂的分享

作者 | 邢不行



不知道大家有没有发现,打开任意一个交易软件,无论是针对A股、美股、期货、甚至B圈的,显眼的地方都默认有KDJ这个指标。



KDJ也算是技术指标中的声名鼎盛者了,它不仅和MACD齐名,还同样众多拥趸


之前我们用大量历史数据暴锤了MACD后,虽然鲜有问我MACD的人了,但更多人转而向我咨询KDJ了。


MACD内容可看上面两期视频


本文就将尝试验证KDJ的有效性,看看KDJ和MACD是“卧龙凤雏”,还是“北乔峰南慕容”?


下面先简单介绍一下KDJ指标。



01

KDJ介绍


1

KDJ概念

KDJ由三根线上下缠绕而成,分别为K线(黄线)、D线(蓝线)和J线(红线)



其中K线和D线在0到100之间波动,J线范围更大。


一般认为这些线越高股价短期越承压,反之则说明股价短期被低估。


2

KDJ计算


根据股票收盘价、最高价和最低价,即可计算出KDJ指标,具体公式如图所示,这里就不再赘述了。



3

KDJ用法


了解KDJ原理后,我们去考察了很多“炒股大师”的说法,发现提到最多的就是KDJ的金叉死叉。



我们来看几个KDJ金叉、死叉的案例:



从图中不难看出,KDJ的金叉死叉是有效的。


但我们不能像那些股评家或者炒股大师一样,光凭几张图就轻易得出结论。


我们还是要用全部股票的历史数据,结合Python代码,找出历史上所有的KDJ金叉死叉,统计之后股价表现,来看指标是否有效,这样才有说服力。



02

个股回测


1

历史数据


想要进行验证,首先我们需要每只股票每天的交易数据。


我已经帮大家整理妥当,包含了所有股票(包括已退市的股票)上市至今每天的开高收低价。数据情况如图所示:



如果你需要这个数据的话,可以扫描下方二维码或加我微信xbx783,都是可以直接发给你的。



2

个股表现


有了数据后,我们先来看KDJ在个股上的金叉死叉表现如何。


我们通过Python代码帮助计算KDJ指标:



如果你需要这个代码的话,可以扫描下方二维码或加我微信xbx783,都是可以直接发给你的。



结果如图所示:



从1990年上市至今,万科共出现1243次KDJ金叉和1242次死叉。


发生金叉后的1天,万科股价的上涨概率是48.27%涨跌幅的中位数为0%,而未来5天、10天、20天的上涨概率也在50%左右


也许有人觉得5天后收益中值是0.16%已然不错,但实盘中扣除交易费用,最终收益甚至不如余额宝。


而死叉发生后股价下跌的概率同样在50%左右,收益中值也基本接近0,这和抛硬币别无二致。



这也基本说明了KDJ金叉死叉的用法,在万科这个股票上是无效的。


当然我们还是不能和大师们一样,只统计一个案例就妄下结论,单一样本可能比较特殊,并没有说服力。



还是要去检验全部的A股,这样得出的结果才是可信的。



03

全A回测


我们在之前的代码中增加一个for循环,统计出A股所有5000只股票的KDJ金叉死叉情况。


相关代码可加我微信xbx783获取


统计结果如图所示:



历史上共出现426万次信号,金叉死叉各213万次


不管金叉还是死叉,未来N天的上涨概率都在50%左右收益中值也都接近0


这无异于抛硬币,也进一步说明了KDJ金叉死叉用法是无效的



04

其他用法回测


1

进阶用法


当然我知道肯定会有人忍不住跳出来说:“KDJ博大精深,简单的金叉死叉并不能代表它,还有很多其他好方法”。


鉴于KDJ用法众多,无法一一验证;我们索性就送佛送到西,再挑一个常见的进阶用法,来验证下效果如何。



比如下面这个方法就有很多支持者:



我们先尝试把上述含糊其辞的话语,翻译成精确可量化的语言



再在原有代码中,加入两个新条件,即可通过程序得到相应的结果。



如果你需要这个代码的话,可以扫描下方二维码或加我微信xbx783,都是可以直接发给你的。



2

回测结果


回测后发现,金叉死叉的信号大幅减少,从426万次降至94万次


从结果来看,这个进阶用法只比之前稍好,但仍属于无效范畴。 



由此可见,KDJ指标在个股上的表现属实拉胯


相信此时仍有人想为KDJ辩护,但如果你觉得你的方法厉害,我建议你问我要了程序测试,看看结果如何,数据是不会说谎的


我们要让一切用数据说话,千万别只凭一些短期经验或大师的案例,就自己骗自己,因为最终亏损的是你自己。



05

聊些小秘密


1

个股择时


最后和大家说一些心里话,其实不止KDJ/MACD这类常见指标,绝大部分的技术指标,在个股上面的效果都是五五开。


如果你不相信,或想亲自测试其他技术指标的话,可以问我要相关的数据代码和资料。


我整理了一个技术指标相关的Excel涵盖了一百多个技术指标的公式和理解,非常的完备。



如果你需要的话可以扫描下方二维码或加我微信xbx783,都是可以直接发给你的。



2

实盘用法


另外我们自己实盘的量化策略中,有时也会使用技术指标,但在策略中属于辅助作用,是在用其他思路选股后,我们用它来做短线择时



我也希望通过这篇文章叫醒那些仍沉迷于技术指标炒股的同学。


虽然确实存在一些有效的技术指标,但想把它研究出来的性价比非常低,同样的研究时间,其他正统的方向收获更大,又何必钻死胡同。


3

大盘择时


最后再透露亿点点内容。


我们验证了KDJ指标在个股上效果不佳,但如果用它针对大盘指数进行择时,就会有不一样的发现。


比如KDJ金叉死叉的用法,在沪深300指数上具体效果如图所示:


KDJ金叉在大盘指数上效果显著


至于效果的优劣,大家也应该会有自己的判断,我就不细说了。


那么这样的现象因何而起,我们又可以据此开发出哪些优秀的策略呢?本文篇幅有限,就先不说了,感兴趣的同学可以扫描下方二维码或加我微信xbx783,和我探讨。



总而言之,我们要学会科学投资,而不仅仅是通过主观拍脑袋或根据一些似是而非的经验去做决策。


归根到底一句话,我们用数据说话。



06

后记


文章的最后,和大家分享一点量化投资的心得

很多人问我小白如何开始学习量化投资,有什么可以书单推荐


我的建议是千万不要直接找本书来看。


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



更好的学习方式是做实际的项目,在实践中学习量化策略。


研报就是很好的量化实践项目。


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


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


熟读唐诗三百首,不会作诗也会吟。


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


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


我会区分难度,精选之后发给你。



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


聊的开心,聊得有缘,很多量化的数据、资料都是可以送给你的。


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



联系作者

往期文章推荐



用Python验证A股名言:跳空必回补...吗?

收藏 | 最最最最简单、最最最最详细的Python和Pandas安装教程

常见量化投资误区合集,量化交易新手脱坑指南 | 邢不行

基金反买,别墅靠海?每年买倒数前十的基金能赚这么多?Python量化分析告诉你答案 附代码【邢不行】

A股永远3000点?量化指数增强策略,轻松多涨10倍!附代码【邢不行】

用Python量化定义MACD,找出A股全部12万次顶底背离,胜率究竟有多少?附代码【邢不行】

邢不行 | 妙用北向资金找出大盘买点、卖点,跟着操作6年4倍【附代码】

邢不行 | Python量化 + 数字货币 + 轮动 = 4年1000倍【附代码】

BTC涨这么多,还能买吗?要卖吗?| 量化定投策略告诉你答案【附代码】


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/149261
 
302 次点击