高频交易算法研发心得--MACD指标算法及应用
凤鸾宝帐景非常,尽是泥金巧样妆。
曲曲远山飞翠色;翩翩舞袖映霞裳。
梨花带雨争娇艳;芍药笼烟骋媚妆。
但得妖娆能举动,取回长乐侍君王。
【摘自《封神演义》纣王在女娲宫上香时题的诗】
一首定场诗完毕,咱们书接上回。上回咱们说到使用基于MA长短周期均线上下穿越的方式对行情进行跟踪。同时也提出该方法的问题,即:当前K线在短时间内出现了类似正弦曲线的波动时,短周期均线和长周期均线会频繁的相互交差。这种情况的问题就是会导致系统进行频繁的交易,如果看官们有过手动交易的经验值,就不难发现,交易的越频繁,可能赔的越多,同是,心脏承担的压力也越大。
从本文开始,我们来聊聊如果使用短线指标来尽量降低交易次数(注意:只能尽量降低,不可能完全屏幕!),首先来看看MACD指标。
MACD指标应该是大多数交易软件中的默认技术指标(另笔者比较晕的是,为什么这些指标会被叫做“技术指标”,完全看不出来和技术有半点关系,另外我也很讨厌很多公司里都把软件工程师叫做“技术”),其维基百科的定义如下:
MACD:指数平滑异同移动平均线(Moving Average Convergence / Divergence, MACD)是股票交易中一种常见的技术分析工具,用于研判股票价格变化的强度、方向、能量,以及趋势周期,以便把握股票买进和卖出的时机。MACD指标由一组曲线与图形组成,通过收盘时股价或指数的快变及慢变的指数移动平均值(EMA)之间的差计算出来。“快”指更短时段的EMA,而“慢”则指较长时段的EMA,最常用的是12及26日EMA。
通常情况下,我们会看到的默认数值为MACD(12,26,9),那么,该指标的算法过程是什么,参数的意义又是什么呢?
其计算过程如下:
//1.首先分别计算当前点的12次EMA均值和26次EMA均值的差,KlineValues可以取Close值或者中间值,其名曰:dif
var dif = EMA(KlineValues, 12) - EMA(KlineValues, 26);
//2.为了数据的平稳性,对前面的均值差,再一次计算EMA,次数为9
var dea = EMA(dif,9);
//3.为了其数据的可视化,求上面二者的差值,并放大两倍
var macd = (dif - dea) * 2;
从计算过程的第一步中,看官不难发现,MACD的本质是将EMA曲线进行了坐标系统的变换,即:以长周期为X轴,并查看短周期的变化情况。由于DIF值是由两个不同周期的均线计算得到的,因此,该值总是围绕着0点上下变换的。
(看官:如果您有过3D系统开发经验(DX,OPENGL,U3D。。。)或者嵌入式电子系统开发经验的话,那么对这种“先进行坐标系统变换,然后得到可量化处理数据”的应用方式就不会感到陌生。)
如果将上面计算过程中dea的参数次数由9改为1的话,上面的macd值就退化成我们前一篇文章中所说的长短均线追逐了,当dif值大于0时,短周期上穿长周期,可以考虑买入,反之亦然。
通过分析,我们大体上可以了解MACD(12,26,9)的数学含义。您可以认为12,26是两个较短周期的跟踪方式。在默认参数的情况下,MACD值出现了穿越了0值时,不能100%的做为买入、卖出条件,但是可以成为上一章节所提的MA线追逐算法降低交易次数的重要参考,情况如下图所示:
由于MACD值是由均值差值计算所得,因此,即使K线走势持平或者微弱上升,都会导致两个均值的差值越来越小,MACD也可能会出现0值跳变。另外,高点或低点峰不能作为判定点,因为你无法预料后面是否还会出现峰值。
如果希望弥补MACD线的弱点,可以使用SAR指标加以共同判读,关于SAR指标,且听下回分解。
作者:科学家
Email:warensoft@163.com
微信:43175692
高频交易算法研发心得--MACD指标算法及应用的更多相关文章
- 高频交易算法研发心得--RSI指标及应用
高频交易算法研发心得--RSI指标及应用 前面文章中我们提到了MA均线(包括EMA,SMA).MACD以及SAR指标,这三类指标存在一个共同特点,即:从固定周期的价格作为判读的指导思想,并将价格进行平 ...
- 高频交易算法研发心得--WAVT指标(Warensoft交易量趋势指标)算法及应用
高频交易算法研发心得--WAVT指标(Warensoft交易量趋势指标)算法及应用 注:WAVT指标由Warensoft(王宇)原创. 前面聊了一系列的常见应用指标,包括短线.长线的指标,并且也无耐的 ...
- AI大厂算法测试心得:人脸识别关键指标有哪些?
仅仅在几年前,程序员要开发一款人脸识别应用,就必须精通算法的编写.但现在,随着成熟算法的对外开放,越来越多开发者只需专注于开发垂直行业的产品即可. 由调查机构发布的<中国AI产业地图研究> ...
- 【算法】经典的ML算法(后续结合工作实践完善心得)
18大数据挖掘的经典算法以及代码实现,涉及到了决策分类,聚类,链接挖掘,关联挖掘,模式挖掘等等方面,后面都是相应算法的博文链接,希望能够帮助大家学.目前追加了其他的一些经典的DM算法,在others的 ...
- 高频交易:Solarflare组建超低延迟网络
10Gb以太网适配器制.网卡造商Solarflare目前正在将自己的网卡系列产品转变为服务器产品.其产品在金融领域有着广泛的应用. Solarflare首先将现场可编程门阵列(FPGA)放入网络适配器 ...
- Machine Learning 算法可视化实现2 - Apriori算法实现
目录 关联分析 Apriori原理 Apriori算法实现 - 频繁项集 Apriori算法实现 - 从频繁项集挖掘关联规则 一.关联分析 关联分析是一种在大规模数据集中寻找有趣关系的任务. 这些关系 ...
- Java才是世界上最好的语言,Java在高频交易中替代C++
高频交易 高频交易是指从那些人们无法利用的极为短暂的市场变化中寻求获利的计算机化交易,比如,某种证券买入价和卖出价差价的微小变化,或者某只股票在不同交易所之间的微小价差.在高频交易中,自动化应用程序每 ...
- 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)
其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...
- JVM内存管理------GC算法精解(复制算法与标记/整理算法)
本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此基础上演化而来的,究竟这两种算法优化了之前标记/清除算法的哪些问题呢? 复制算 ...
随机推荐
- 将表里的数据批量生成INSERT语句的存储过程 增强版
将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...
- Code Review 程序员的寄望与哀伤
一个程序员,他写完了代码,在测试环境通过了测试,然后他把它发布到了线上生产环境,但很快就发现在生产环境上出了问题,有潜在的 bug. 事后分析,是生产环境的一些微妙差异,使得这种 bug 场景在线下测 ...
- js实现前端分页页码管理
用JS实现前端分页页码管理,可以很美观的区分页码显示(这也是参考大多数网站的分页页码展示),能够有很好的用户体验,这也是有业务需要就写了一下,还是新手,经验不足,欢迎指出批评! 首先先看效果图: 这是 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- Android调用微信登陆、分享、支付
前言:用了微信sdk各种痛苦,感觉比qq sdk调用麻烦多了,回调过于麻烦,还必须要在指定包名下的actvity进行回调,所以我在这里写一篇博客,有这个需求的朋友可以借鉴一下,以后自己别的项目有用到也 ...
- .net windows Kafka 安装与使用入门(入门笔记)
完整解决方案请参考: Setting Up and Running Apache Kafka on Windows OS 在环境搭建过程中遇到两个问题,在这里先列出来,以方便查询: 1. \Jav ...
- Java程序:从命令行接收多个数字,求和并输出结果
一.设计思想:由于命令行接收的是字符串类型,因此应先将字符串类型转化为整型或其他字符型,然后利用for循环求和并输出结果 二.程序流程图: 三.源程序代码: //王荣荣 2016/9/23 ...
- 微信小程序教程汇总
目前市面上在内测期间出来的一些实战类教程还是很不错的,主要还是去快速学习小程序开发的整体流程,一个组件一个组件的讲的很可能微信小程序一升级,这个组件就变了,事实本就如此,谁让现在是内测呢.我们不怕,下 ...
- BPM流程中心解决方案分享
一.需求分析 在过去办公自动化的浪潮中,很多企业已经实施了OA流程,但随着客户的发展和对流程管理的越来越重视, 客户对流程应用需求越来越深 入,您可能面临以下需求: 1.流程功能不能满足需求,包括流程 ...
- Oracle 分页
--1:无ORDER BY排序的写法.(效率最高) --(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT ...