社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

经管之家 • 2 年前 • 254 次点击  


这是邢不行第 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/150342
 
254 次点击