股票MACD指标算法公式

MACD指标是股票技术中最实用最重要的指标之一,其中涉及EMA、DIF、DEA、BAR几个指标。然而,对MACD指标的定义及分解算法,书上和网上的资料乱七八糟,有的说法互相矛盾,特别是对于指标的分解(即股价与指标值之间的关系),我查了不少资料,要么是有漏洞,要么是错的,并且有的错误的说法流毒甚广。html

事实上,这些有错误的说法,只要拿实际案例检验一下,就知道是错误的了。惋惜中国人作学问,不求甚解,人云亦云的多,踏踏实实钻研的少。若是对一个指标的来由都没搞清楚,如何可以深入理解其各类信号的含义?如何可以深入理解操做策略运用的道理?我到如今尚未发现一个对MACD指标公式及其分解说得彻底正确的资料,没办法,只好本身研究,最后我获得了正确能够验证的算法,如今公布在这里,以供参考。web


1、
EMA算法

MACD指标中,EMA指标虽然没有直接出如今股票软件的MACD指标界面上,可是EMA指标倒是全部MACD指标的基础。而正是这个EMA指标,对其定义和分解的说法是最乱的。因此首先要搞透EMA。spa

EMA即英文Exponential Moving Average的缩写,即指数移动平均指标,也叫EXPMA指标。htm

EMA的定义为,当日EMA等于当日收盘价减去昨日EMA以后乘以平滑系数,而后再加上昨日的EMA。写成通用公式以下:
其中为平滑系数, C为今日收盘价,EMA’表示昨日的EMA。EMA(N)表示若是要算的是N日的EMA,则平滑系数要套入公式,好比要算12日的EMA,即EMA(12),则其平滑系数blog

EMA通用公式也能够变形为如下形式:get


对EMA(12)和EMA(26)公式以下:博客


看到这个EMA定义,你们可能会疑惑,这个定义不是死循环吗?定义中还包含昨日的EMA,那么昨日的EMA又包含前日的EMA,什么时候是尽头呀!事实上,有尽头,尽头就是新股上市首日,那么新股上市首日的EMA是多少呢?这里有我的为规定,规定把首日收盘价当成是首日EMA,从第二天开始,其EMA开始套用以上公式进行计算。it

你们能够随便找一只股票从股票上市日开始来验证这个定义。注意,因为股票的MACD界面上并不出现EMA指标,你们能够在股票软件个股股价走势图界面上用键盘输入EXPMA前面说过,EMA也称为EXPMA),就能够调出EMA指标,通常软件默认的是EMA(12)和EMA(50)两个指标。你们能够用EMA(12)来验证,若是会修改指标的还能够把EMA(50)修改为EMA(26)来验证。上市首日的EMA是首日收盘价,而后第二日开始用EMA(12)=0.1538C+0.8462*EMA’公式来计算,之后都套用此公式算下去。class

注意,若是股价不复权,那么得出来的EMA数据是不复权的数据。若是股价采用了前复权处理,那么得出来的EMA数据也是前复权的数据。也就是说,若是一只股票除权过,那么其复权与不复权的EMA也是不一样的!除权与复权应该不用我解释吧?若是你不知道什么叫除权复权,那么你不该该炒股!还想炒股的话,赶忙先学会除权复权知识。

掌握了以上的知识,你对EMA的算法的了解还远远不够。好比一只股票上市了不少年了,它今天的EMA数值你知道是多少吗?要知道今天的EMA,得知道昨天的EMA,要知道昨天的EMA,得知道前天的EMA,这样类推下去,岂不是有得追溯到上市首日,那数据量太大了!事实上,咱们直观的知道,离当日时间越久,其股价和MEA对今天的EMA的影响就越小,因此,EMA与股价之间应该有个展开式,并且展开式中离今日的日期很远的股价应该能够省略。根据EMA的定义,EMA确实能够获得一个展开式,假设要计算从股票上市起第n日的EMA,计为EMAn,则有:
其中为平滑系数,Cn表示股票上市第n日的收盘价,Cn-1表示股票上市第n-1日的收盘价,Cn-2表示股票上市第n-2日的收盘价……C2表示股票上市第2日的收盘价,C1表示股票上市首日的收盘价。固然,上市好久的股票,要追溯到上市首日的话时间过久了,不现实,那么追溯到多少天比较合适呢?对于N日的EMA,即EMA(N),其股价追溯到前3.45*(N+1)日的就能够了,更早的股价能够忽略。好比说EMA(12)追溯到前45日的股价就能够了,EMA(26)追随到前94日的股价就能够了。根据验证,若是想偏差更小,能够追溯到前5N日的股价。
注意,这里涉及到了两个概念,N日的EMA用EMA(N)表示,为防止混淆,这里的N用大写字母表示,N决定了平滑系数 ,好比咱们说EMA(12),则其平滑系数为n日的EMA用EMAn表示,这里的n是指从股票上市日计起的第n个交易日,为防止混淆,这里的n用小写字母表示。

从EMAn的展开式能够看出来,算EMA时,从当日的股价开始,比其更早的交易日的股价以前的系数,随时间是按的指数递减的,越近期的数据加权影响力越重,但较旧的数据也给予必定的加权值。到这里,咱们就明白为何EMA会称为指数移动平均指标了。

若是项数比较多,那么分母趋向于等于。因而以上公式能够简化为:

可是根据验证,这个简化式对验证EMA(12)和EMA(26)只能精确到小数点后第二位数字,若是要算DIF=EMA(12)- EMA(26),则精确度不够,不能简化!


2、DIF

EMA搞透了,其余指标就比较简单了。DIF指标公式以下:

DIF= EMA(12)- EMA(26)

新股上市首日,其首日DIF为0。从第二天开始,所有都用当天的EMA(12)- EMA(26)获得当天的DIF。

注意,研究MACD指标要尽可能采用股价前复权以后的数据来研究。


3、DEA

DEA通用公式:


DEA’表示昨日的DEA。

这个公式能够模仿普通EMA的展开式展开,这里再也不详述。

默认的DEA即DIF线的9日指数平滑移动平均线,也能够表示为MEA(DIF,9)。


新股上市首日,其首日DEA为0。从第二天开始,因为首日DEA为0,所以第二天的DEA=0.2* DIF+0=0.2*DIF。后续日子的DEA能够套用0.2*DIF + 0.8* DEA’计算。


4、BAR

BAR=2* (DIF-DEA)

(本文转载自爱因迪生的博客)

EMAMACD股票