引言:

邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投Z,了解行业研究方向

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

作者 l 邢不行

不知道大家有没有发现,打开任意一个交易软件,无论是针对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 历史数据

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

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

如果你需要这个数据的话,可以点我头像交流,都是可以直接发给你的。

2 个股表现

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

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

相关代码可点我头像交流获取

结果如图所示:

​从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金叉死叉情况。

相关代码可点我头像交流获取

统计结果如图所示:

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

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

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

04 其他用法回测

1 进阶用法

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

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

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

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

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

相关代码可点我头像交流获取

2 回测结果

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

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

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

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

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

05 聊些小秘密

1个股择时

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

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

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

如果你需要的话可以点我头像交流获取,都是可以直接发给你的。

2 实盘用法

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

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

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

3 大盘择时

最后再透露亿点点内容。

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

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

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

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

那么这样的现象因何而起,我们又可以据此开发出哪些优秀的策略呢?本文篇幅优先,就先不说了,感兴趣的同学可以点我头像交流,和我探讨。

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

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

06 后记

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

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

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

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

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

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

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

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

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

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

你可以点我头像交流,我这里有分门别类几万份研报,还会实时更新。

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

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

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

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

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

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

    引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. 下图中橙色曲线是等比缩放的沪深300指数. (6年 ...

  2. 在哪里能收到python实例代码-Python找出最小的K个数实例代码

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 这个题目完成的思路有很多,很多排序算法都可以完成既定操作,关键是复 ...

  3. 谈从10亿个数中找出前10万个最大的

    谈从10亿个数中找出前10万个最大的 期的实验显示10亿个浮点数大概占据3G左右的空间,因此全部一次性读入内存目前在个人PC上是不太现实的.本次讨论不考虑内存等等,只考虑算法. 如果一次性比较排序,然 ...

  4. Python找出列表中出现次数最多的元素三种方式

    通过三种方式给大家介绍,具体详情如下所示: 方式一: 原理:创建一个新的空字典,用循环的方式来获取列表中的每一个元素,判断获取的元素是否存在字典中的key,如果不存在的话,将元素作为key,值为列表中 ...

  5. linux 端口tnpl,利用Python找出9个连续的空闲端口

    这篇文章主要介绍了Python找出9个连续的空闲端口的方法,感兴趣的小伙伴们可以参考一下 一.项目需求 安装某软件,配置时候需要填写空闲的端口.查看5个平台的某个端口是否被占用 5个平台为window ...

  6. python找出某个文件夹下某个后缀的文件

    python找出某个文件夹下某个后缀的文件 import osdef find_files_with_suffix(folder_path, suffix):# 使用os模块获取文件夹中所有文件的路径 ...

  7. python找最长的单词,Python 找出英文单词列表(list)中最长单词链

    这篇文章主要介绍了Python 找出英文单词列表(list)中最长单词链,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本文主要 ...

  8. Python -- 找出100以内的所有质数

    Python – 找出100以内的所有质数 质数:除了1和本身没有其他因数 i=2 for i in range(2,100): # 取i从2开始,2 最小的质数for j in range(2,i) ...

  9. python分词统计词频_-用python找出一篇文章中词频最高的20个单词

    python统计一个大文件中很多小文件里面的词频 #!/usr/bin/env python3.6 from collections import Counter from functools imp ...

最新文章

  1. 找出1个小时前更新的文件并进行拷贝
  2. 【c语言】蓝桥杯算法训练 sign函数
  3. 目标跟踪从0到1:算法与实践
  4. 交互式地图_张晟推出学校资源交互式地图工具
  5. 无需安装配置,多操作系统支持数据库及性能测试
  6. VirtualBox中,WIN虚拟机与WIN共享文件夹
  7. 打开UG8.0出现启动界闪一下就没有任何反应了怎么回事?
  8. 安装磁盘阵列卡的方法
  9. 我的小米智能家居系统
  10. AutoCAD快速入门(十三):倒角和圆角
  11. linux复制操作 cp: -r not specified; omitting directory XXX 错误
  12. Jetson-Xavier-NX刷机+pytorch环境配置+yolov5运行
  13. android仿微信发布动态功能,Android GridView扩展仿微信微博发图动态添加删除图片功能.pdf...
  14. oracle10g数据库复制,Oracle10g中Duplicate复制数据库
  15. 《机器学习实战》——kNN
  16. tableau:凹凸图
  17. maven多模块 统一版本管理 的正确姿势 (CI Friendly Versions) - ${revision}
  18. java计算机毕业设计公交线路查询系统MyBatis+系统+LW文档+源码+调试部署
  19. Android中悬浮按钮的实现(记录)
  20. 三年亏损14亿,想在纽交所上市的爱回收,靠做旧生意能拼过闲鱼和转转吗?

热门文章

  1. 精灵图(雪碧图)的好处
  2. 自己制作游戏(怎么自己做游戏)
  3. NLP初学-文本预处理
  4. AUTOCAD——圆环
  5. 计算机键盘被锁怎么解,解开电脑键盘锁的小窍门
  6. 跨考没有计算机二级,计算机二级可以跨学校报名吗 计算机二级可以跨校报考吗?...
  7. 用ShaderToy实现牛顿迭代法分形图像
  8. 整理的一些 Vue3 知识点
  9. java 最大子序列和
  10. MySQL创建数据表的三种方式