龙哥量化:缠论的笔、线段、中枢以及MACD背离分析实现
声明:看到研究非常细致深入的文章,转载到我的博客园,以便学习和研究。
(转载自聚宽的大象咖啡)
本文参考了如下相关文贴:
- 【量化缠论】之分型、笔、线段识别
1.1. 在该帖的基础上将线段和调整后的k线绘制在一张图中;
1.2. 添加了中枢判断,并和调整后的k线绘制在一张图中; - 《MACD背离》技术研究和对MACD底背离策略改写的改写——30秒极速版
2.1. 在大牛的基础上对不同类型的背离做了点皮毛分析;
本文以TCL集团(000100)11月6日至10日的30分钟级别,以及华润三九(000999)2017年行情为例介绍总体实现。
绘制k线图
函数get_k_series(security, start_date, end_date, n=30)获取k线序列,默认为30分钟级别。plot_k_series(k_data)函数绘制k线图。TCL集团(000100)11月6日至10日的30分钟级别的k线图绘制如下。
数绘制k线图。TCL集团(000100)11月6日至10日的30分钟级别的k线图绘制如下。
分型、笔、线段
分型是笔的节点,笔相互连接构成线段。分型是通过所考察的级别k线相互关系判断的。关于分型的具体定义截取《缠论》相关章节如下。
图1,第二K线高点是相邻三K线高点中最高的,而低点也是相邻三K线低点中最高的,定义其为顶分型;图2,第二K线低点是相邻三K线低点中最低的,而高点也是相邻三K线高点中最低的,定义为底分型。顶分型的最高点叫该分型的顶,底分型的最低点叫该分型的底。
两个相邻的顶和底之间构成一笔,所谓笔,就是顶和底之间的其他波动,都可以忽略不算,但注意,一定是相邻的顶和底,隔了几个就不是了。而所谓的线段,就是至少由三笔组成。但这里有一个细微的地方要分清楚,因为结合律是必须遵守的,像图3,顶和底之间必须共用一个K线,这就违反结合律了,所以这不算一笔,而图4,就光是顶和底了,中间没有其他K线,一般来说,也最好不算一笔,而图5,是一笔的最基本的图形,顶和底之间还有一根K线。在实际分析中,都必须要求顶和底之间都至少有一K线当成一笔的最基本要求。
当然,实际图形里,有些复杂的关系会出现,就是相邻两K线可以出现如图6这种包含关系,也就是一K线的高低点全在另一K线的范围里,这种情况下,可以这样处理,在向上时,把两K线的最高点当高点,而两K线低点中的较高者当成低点,这样就把两K线合并成一新的K线;反之,当向下时,把两K线的最低点当低点,而两K线高点中的较低者当成高点,这样就把两K线合并成一新的K线。经过这样的处理,所有K线图都可以处理成没有包含关系的图形。而图7,就给出了经过以上处理,没有包含关系的图形中,三相邻K线之间可能组合的一个完全分类,其中的二、四,就是分别是顶分型和底分型,一可以叫上升K线,三可以叫下降K线。所以,上升的一笔,由结合律,就一定是底分型+上升K线+顶分型;下降的一笔,就是顶分型+下降K线+底分型。注意,这里的上升、下降K线,不一定都是3根,可以无数根,只要一直保持这定义就可以。当然,简单的,也可以是1、2根,这只要不违反结合律和定义就可以。至于图8,就是线段的最基本形态,而图9,就是线段破坏,也就是两线段组合的其中一种形态。
如上所述,在实现的过程中,k线的包含关系会影响顶分型和底分型的判断。因此需要首先调整k线的包含关系以便于判断顶分型和底分型。具体调整规则如下:
k线向右包含:
- 如果是上升趋势,取更高的最低价;
- 如果是下降趋势,取更低的最高价;
k线向左包含:
- 如果是上升趋势,取更高的最高价;
- 如果是下降趋势,取更低的最低价;
调整过程由函数adjust_by_cintainment(k_data)实现。调整之后的TCL集团(000100)11月6日至10日的30分钟级别的k线图绘制如下:
调整之后的k线之间没有绝对的包含关系,这样容易寻找分型。分型的判断标准如下:
分型判断(并非严格的分型):
- 底分型,下降趋势中的第一个最低价抬升;
- 顶分型,上升趋势中的第一个最高价回落;
- 底分型之后必为顶分型;顶分型之后必为底分型;
- 分型之间至少有3根k线;
另外,由于起止点不构成分型,这样线段两端就是空白的。为了美观起见,起止点这里采用第一根和最后一根k线的二分位作为线段的起止点。
通过上面的方法得到分型以及起止点,对应的函数是get_fx(adjusted_k_data)。有了分型就可以连成笔,并进一步将笔连成线段。绘制函数是plot_lines(ax, fx_plot, fx_offset)。绘制效果如下:
中枢判断
缠论中的中枢满足如下条件:
- 必须在一个完整的走势类型中(至少3笔);
- 价格范围是最小的最高价,以及最大的最低价;
根据上述条件,实现中枢判断函数,对应到get_pivot(fx_plot, fx_offset, fx_observe)。输入中的fx_observe为观测的分型位置,函数返回这个位置前面最近的一个中枢区间。
比如,输入是上图中咖啡色处的分型点位,那么函数输出这个分型位置前面最近的中枢。中枢绘制函数是plot_pivot(ax, pivot_date_interval, pivot_price_interval)。绘制效果如下:
可以看到,目前30分钟图上股价处于最近的中枢上方,如果下跌不进入中枢区就会形成第三类买点(这个第三类买点在本周没有出现)。第三类买点需要动量分析。下文介绍MACD背离的判断实现。
MACD背离判断
MACD背离根据不同人的使用习惯有以下几种类型(以顶背离为例):
- 驼峰背离:股价创新高,MACD红柱没有创新高(左图);
- 面积背离:股价创新高,MACD红柱面积没有扩大(中图);
- 快慢线背离:股价创新高,快慢线死叉点位没有创新高(右图3);
上述三类背离以快慢线背离最为准确,并且计算效率最高。因此本文实现快慢线背离。实现函数为check_deviating(scode, fastperiod=11, slowperiod=26, signalperiod=9)。该函数判断日线级别的背离。判断规则如下:
底背离判断:
最近的收盘价快慢线金叉,与上一次金叉相比,金叉点位提高,dif提高,收盘价下跌;
顶背离判断:
最近的收盘价快慢线死叉,与上一次死叉相比,死叉点位下降,dif下降,收盘价上升;
以华润三九(000999)为例,2017年以来日线级别的背离判断如下:
可以看出以快慢线背离进行判断,买点靠右,卖点靠左,因而风险较小。不过个股也容易出现不有效的情况。背离的判断对于指数更加有效。所以我也会尝试在ETF指数上用背离策略,看看效果如何。
总结
上述实现没有仔细推敲,代码也显得凌乱,个人水平也十分有限。往大神们批评指正!
龙哥量化:缠论的笔、线段、中枢以及MACD背离分析实现的更多相关文章
- 龙哥库塔法or欧拉法求解微分方程matlab实现
举例:分别用欧拉法和龙哥库塔法求解下面的微分方程 我们知道的欧拉法(Euler)"思想是用先前的差商近似代替倒数",直白一些的编程说法即:f(i+1)=f(i)+h*f(x,y)其 ...
- 杨恒说李的算法好-我问你听谁说的-龙哥说的(java中常见的List就2个)(list放入的是原子元素)
1.List中常用的 方法集合: 函数原型 ******************************************* ********************************** ...
- 声笔飞码GB2312单字效率分析
-----------------------声笔飞码强字方式单字效率分析-------------------------- 2 keys: 567 items, 381900209 ...
- hdu-4507 吉哥系列故事——恨7不成妻 数位DP 状态转移分析/极限取模
http://acm.hdu.edu.cn/showproblem.php?pid=4507 求[L,R]中不满足任意条件的数的平方和mod 1e9+7. 条件: 1.整数中某一位是7:2.整数的每一 ...
- 东哥讲义2 - 基于TCP,UDP协议的攻击,分析与防护
TCP SYN FLOOD 攻击 正常的TCP三次握手过程: 处于SYN FLOOD攻击状态时的三次握手过程: 查看示例:x_syn.c文件,一个实现了自定义mac,ip,tcp头部的syn floo ...
- python做量化交易干货分享
http://www.newsmth.NET/nForum/#!article/Python/128763 最近程序化交易很热,量化也是我很感兴趣的一块. 国内量化交易的平台有几家,我个人比较喜欢用的 ...
- SAP成都研究院许聚龙:Hello, Coresystems!
Jerry的前一篇文章<SAP成都研究院数字创新空间沟通S/4HANA和C/4HANA的智能服务演示视频和Coresystems分享预告>已经提到,接下来会由SAP成都研究院数字创新空间的 ...
- 2019 Multi-University Training Contest 7 - 1006 - Snowy Smile - 线段树
http://acm.hdu.edu.cn/showproblem.php?pid=6638 偷学一波潘哥的二维离散化和线段树维护最大子段和. 思路是枚举上下边界,但是不需要从左到右用最大子段和dp. ...
- POJ——3264线段树
题目: 输入两个数(m,n),m表示牛的头数,n表示查询的个数.查询时输入两个数(x,y),表示查询范围的起始值和终止值,查询结果是,这个区间内牛重量的最大值减去牛重量的最小值,数量级为1000,00 ...
- 简单几何(线段相交) POJ 2653 Pick-up sticks
题目传送门 题意:就是小时候玩的一种游戏,问有多少线段盖在最上面 分析:简单线段相交,队列维护当前最上的线段 /******************************************** ...
随机推荐
- idea创建搭建项目 maven eg
1. 创建一个空的项目 ps:作为 git 管理 ,父项目 2. 创建第一个微服务 先导入两个必要的组件 web spring web : spring cloud openfeign (用于微服务之 ...
- 02-react中jsx的基本使用
// 使用 createElement太繁琐 不直观 不优雅开发体验不好 代码维护不行 // jsx 不是 js 而是 js的扩展语法 // jsx 是react的核心内容 // react项目中已经 ...
- 云原生爱好者周刊:Grafana 开源 Prometheus 长期存储项目 Mimir
开源项目推荐 Grafana Mimir Grafana Mimir 是 Grafana Labs 新开源的项目,用来为 Prometheus 提供持久化存储,开源许可协议是 AGPL-3.0.此前 ...
- mongodb副本集群使用总结
一.该文档仅为了总结经验,方便下次部署时跳过踩过的坑.其中MongoDB的复制原理.特点等参照的菜鸟教程,附地址:https://www.runoob.com/mongodb/mongodb-repl ...
- CSS动画(波光粼粼登录页面)
1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa4AbemkU3vLRIDzTIgPHSjicia97wfvMVAhqZL4lsGbQQCbsV ...
- UniswapV2Factory细节
UniswapV2Factory合约是Uniswap V2协议中的关键部分,负责管理和创建所有的流动性池(交易对).以下是对UniswapV2Factory合约中所有主要方法及其参数的详细讲解. 方法 ...
- 3.14 深度剖析Linux硬链接和软链接,直击它们的本质!
建立硬链接和软链接非常简单,那这两种链接有什么区别?它们都有什么作用?这才是链接文件最不容易理解的地方,我们分别来讲讲. ln创建硬链接 我们再来建立一个硬链接文件,然后看看这两个文件的特点. [ro ...
- 2.13 新手必读的Linux使用注意事项
通过安装并体验 Linux 系统,读者应该能发现 Linux 与 Windows 的一些不同之处,本节就几个容易让初学者混淆的问题做重点讲解,以便加深读者对 Linux 系统的认识. Linux 严格 ...
- Wgpu图文详解(02)渲染管线与着色器
在本系列的第一篇文章中(<Wgpu图文详解(01)窗口与基本渲染>),我们介绍了如何基于0.30+版本的winit搭建Wgpu的桌面环境,同时也讲解了关于Wgpu一些基本的概念.模块以及架 ...
- Typora实现双击图片放大 Mac
前置条件 Typora LightBox: github下载 添加LightBox拓展 打开应用程序,找到typora,右键选择"显示包内容". 解压lightbox2代码,将di ...