高频交易算法研发心得--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指标算法及应用

由于MACD值是由均值差值计算所得,因此,即使K线走势持平或者微弱上升,都会导致两个均值的差值越来越小,MACD也可能会出现0值跳变。另外,高点或低点峰不能作为判定点,因为你无法预料后面是否还会出现峰值。

如果希望弥补MACD线的弱点,可以使用SAR指标加以共同判读,关于SAR指标,且听下回分解。

作者:科学家

Email:warensoft@163.com

微信:43175692

上一篇:Xamarin.Android调用百度地图


下一篇:关于(object sender, EventArgs e)