MACD – 从根本上了解MACD

“MACD ,金叉涨死叉跌”

绝大部分人对MACD的理解停留在此

其实,在未深入研究量化之前,我也并未真正理解MACD是什么

MACD 的全称是 Moving Average Convergence / Divergence

意即移动平均线的离散度

所以MACD本质是关于移动平均线的表述

我们来看一下MACD的算法实现

MACD的算法分为5步计算

1)计算一条快周期的均线,计为 fast_ma ,周期一般取 12

2)计算一条慢周期的均线,计为slow_ma,周期一般取20

3)计算两条均线的价差, 计为 diff,diff = fast_ma – slow_ma

4)计算diff的平均周期指数 ,计为 dea,周期一般取 9 

5)计算diff 与 dea 的差,即MACD = diff – dea

diff 就是 Differential,在数学中表示微分

dea,就是  Differential Exponential Average , 表示用 EMA方法对diff 做均值运算

至此,我们不难看出,MACD的本质是表示快慢两条均线的的离散度

这一点在MT5中体现很明显,我们通常看到的MACD图是一个双线加柱状图,而在MT5的MACD指标中,只有一条线:DIFF表示成了柱,算法上 DIFF = MACD ,这让第一次看到的人有些不太明白。

事实上DIFF 表示为柱与线并没有区别, MACD 是  DIFF 还是   DIFF与DEA的金叉死叉  也差异不大,

关于MT5的部分如果未接触过可以直接跳过,直接来看MACD的类代码实现算法

fast_ma = EMA(fast_period,close);

slow_ma  = EMA(slow_period,close);

diff = fast_ma – slow_ma;

dea = EMA(diff,dea_period);

macd = diff – dea

在计算平均值时,用指数平均 EMA 和 算术平均 SMA是没有对错之分的,看个人习惯 

这里面关键的一点是快慢周期的选择 即fast_period,slow_period 

也就是说你的MACD对哪两条均线的运动表示,这一点非常重要

默认的12,26 来表示 20 60 周期的均线离散离是不合逻辑的

不是说12,26不对,除非知道自己在做什么

否则当主图上走着 20,60,附图MACD表征的是12,26,这就很滑稽了

不是说不行,除非知道自己在做什么

比如用相对短的周期增强灵敏度,macd(15,50,5)来对应20,60两线的离散

离散也就是趋势强弱的体现

MACD的本质是趋势