“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的本质是趋势