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

news/2024/5/3 8:54:27/文章来源:https://blog.csdn.net/xingbuxing_py/article/details/126778623

引言:

邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用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”就结束了;你找本数学书看,那看到第七页的公式就睡着了。

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

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

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

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

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_7028.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring+SpringMVC+MyBatis之配置多数据源

数据库准备   1、准备2个数据库,本例以mysql为例 在第一个数据库新建表user -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS user; CREATE TABLE user (id int(11) NOT NULL AUTO_INCREME…

gateway过滤器

简介 1 作用: 过滤器就是在请求的传递过程中,对请求和响应做一些手脚 2 生命周期: Pre Post 3 分类: 局部过滤器(作用在某一个路由上) 全局过滤器(作用全部路由上) 在Gateway中, Filter的生命周期只有两个:“pre” 和 “post”。 PRE: 这种过滤器在请…

【蓝桥杯国赛真题24】Scratch货物运输 第十三届蓝桥杯 图形化编程scratch国赛真题和答案讲解

目录 scratch货物运输 一、题目要求 编程实现 二、案例分析 1、角色分析

PostGIS是什么

1. 什么是GIS(知识地图定位) 1.1. GIS概念 地理信息系统(Geographic Information System或 Geo-Information system,GIS)有时又称为“地学信息系统”。它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下&a…

注册中心对比和选型:Zookeeper、Eureka、Nacos、Consul和ETCD

转自:https://juejin.cn/post/7068065361312088095 下面是文章目录:注册中心基本概念 什么是注册中心? 注册中心主要有三种角色:服务提供者(RPC Server):在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态。 服务消费者(RPC Client):在启…

【Linux虚拟机安装】在VMware Workstation上安装ubuntu虚拟机

目录0、工具清单1、下载操作系统镜像2、创建虚拟机3、设置ubuntu系统0、工具清单 虚拟机软件:VMware Workstationubuntu镜像版本:Ubuntu 20.04.4 LTS (Focal Fossa)宿主机操作系统:Windows 10 专业版 1、下载操作系统镜像 官方下载网址&am…

氨基聚苯乙烯包覆硅胶微球SG-PS-NH2/聚苯乙烯/硫化镉PS/CdS复合材料/聚苯乙烯支载井冈霉素微球制备

今天小编给大家分享了氨基聚苯乙烯包覆硅胶微球SG-PS-NH2/聚苯乙烯/硫化镉PS/CdS复合材料/聚苯乙烯支载井冈霉素微球的制备方法,一起来看看! 小编分享-氨基聚苯乙烯包覆硅胶微球SG-PS-NH2的制备方法: 通过对硅胶微球进行聚苯乙烯包覆,然后功…

javascript为什么叫脚本语言

脚本script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。 脚本通常可以由应用程序临时调用并执行。 各类脚本目前被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度&#xf…

为什么ASO很重要?

由于用户对多功能App的需求量增大,导致榜单影响力下滑,越来越多的用户通过搜索相关词来查找目标App。同时搜索对排名的影响权重也被各家应用商店加大。数据库显示,用户越来越习惯直接搜索关键词来搜索想要的应用。各应用商店收录热词现阶段有…

压缩网络相关

同样搬运模式 勿怪呀 大佬们 自从深度学习(Deep Learning)开始流行,已经在很多领域有了很大的突破,尤其是AlexNet一举夺得ILSVRC 2012 ImageNet图像分类竞赛的冠军后,卷积神经网络(CNN)的热潮便…

【JY】YJK前处理参数详解及常见问题分析:控制信息(二)

点击蓝字 求求关注【写在前文】本文介绍计算控制信息之控制信息。【计算信息参数详解】一、控制信息A区参数详解1、水平力与整体坐标夹角该参数为地震作用、风荷载计算时的X正向与结构整体坐标系下X轴的夹角,逆时针方向为正,单位为度。常见问题&#xf…

10、MyBatis-Plus 多数据源

第一篇:1、Mybatis-Plus 创建SpringBoot项目 第二篇:2、Mybatis-Plus 测试增、删、改、查 第三篇:3、Mybatis-Plus 自定义sql语句 第四篇:4、Mybatis-Plus 通用service的操作 第五篇:5、Mybatis-Plus 常用注解 第六篇&…

004-GoingDeeperConvolutions2014(googLeNet)

Going Deeper with Convolutions #paper1. paper-info 1.1 MetadataAuthor:: [[Christian Szegedy]], [[Wei Liu]], [[Yangqing Jia]], [[Pierre Sermanet]], [[Scott Reed]], [[Dragomir Anguelov]], [[Dumitru Erhan]], [[Vincent Vanhoucke]], [[Andrew Rabinovich]] 作者机…

UNIAPP----video标签层级问题的三种解决方法

uniapp的app端,video标签层级过高,无法轻易被遮盖。 三种解决方法,真机测试没问题。代码复制即可。 1.cover-view或者cover-image,放在video标签内使用,子绝父相 缺点:只能改变cover-view样式&#xff0…

算法落地思考:如何让智能运维更智能

嘉宾 | 王鹏 整理人 | 西狩xs 出品 | CSDN云原生 AIOps是人工智能与运维的结合,能够基于已有的运维数据,利用人工智能算法,通过机器学习的方式帮助企业提升运维效率,解决自动化运维无法管理的问题。 2022年8月30日&#xff0…

spring底层原理初探

一,spring原理初探 1,bean的创建生命周期 userService.class --> 推断构造方法 --> 实例化对象 --> 依赖注入(属性填充) --> 初始化前(PostConstruct) --> 初始化 (Initializingbean) --> 初始化后(AOP,bean的后置处理器…

Wireshark分析https流量

这里写自定义目录标题本文介绍使用wireshark分析https流量的方法。适用chromium内核的浏览器和firefox浏览器,前提是这些浏览器内核都支持如下选项: –ssl-key-log-file 浏览器配置 添加启动参数 例如: firefox.exe --ssl-key-log-filec:/s…

Python中setdefault()通过键查找字典中对应的值

【小白从小学Python、C、Java】 【Python-计算机等级考试二级】 【Python-数据分析】 字典中根据键k查找键k对应的值v 如果没找到键k,则创建键k并赋值为default setdefault() [太阳]选择题 以下Python代码中setdefault(d, 666)的返回值是什么? myDic {&…

java基于微信小程序的大学生个人家庭理财产品 uniapp小程序

为了方便操作,从多方面把用户的个人支付,个人收入等财产管理的数据,以及他们的生活结余和消费统计,用科学统计的方法把这些数据存储在财务管理软件之中。文中着重论述了该系统的功能与实现,如数据流程与存储、管理等功能,并对关键的技术作了较详…

动态规划 - 背包问题 回文串分割

目录 1.背包问题 1.1 题目描述 1.2 画图分析 1.3 思路分析 1.4 代码示例 2. 回文串分割 2.1 题目描述 2.2 思路分析 2.3 代码示例 1.背包问题 1.1 题目描述 有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小 和数组 V 表示每个物品的价值.问最多能装…