MACD详细计算方法及例子

MACD对技术流投资者的重要性不言而喻。然而,很多资料对其详细算法都语焉不详。尤其是第一天和第二天的MACD的处理方式,很多说法有差别。今天查了查资料,终于搞清楚了其计算方法。用该方法计算理工检测,法因数控等股票MACD,和大智慧或者飞狐交易师上面显示的DIFF,DEA以及MACD完全吻合。
关键的一点是:新股上市首日,其DIFF,DEA以及MACD都为0,因为当日不存在前一日,无法做迭代。而计算新股上市第二日的EMA时,前一日的EMA需要用收盘价(而非0)来计算。另外,需要注意,计算过程小数点后四舍五入保留4位小数,最后显示的时候四舍五入保留3位小数。
具体计算公式及例子如下: 
EMA(12)= 前一日EMA(12)×11/13+今日收盘价×2/13
EMA(26)= 前一日EMA(26)×25/27+今日收盘价×2/27
DIFF=今日EMA(12)- 今日EMA(26)
DEA(MACD)= 前一日DEA×8/10+今日DIF×2/10 
BAR=2×(DIFF-DEA)
对理工检测:
20091218日:
    新股上市,DIFF=0, DEA=0, MACD=0,收盘价55.01
20091219日:
    收盘价53.7
    EMA(12)=55.01+(53.7-55.01)×2/13=54.8085   
    EMA(26)=55.01+(53.7-55.01)×2/27=54.913  
    DIFF=EMA(12)- EMA(26)= 54.8085 - 54.913 = -0.1045  (-0.104?)
    DEA=0+(-0.1045)X2/10=-0.0209
    BAR=2*((-0.1045)-(-0.0209))=-0.1672
对法因数控:
20080905日:
    新股上市,DIFF=0, DEA=0, MACD=0,收盘价12.34
20080908日:
    收盘价11.11
    EMA(12)=12.34+(11.11-12.34)×2/13=12.1508
    EMA(26)=12.34+(11.11-12.34)×2/27=12.2489
    DIFF=EMA(12)- EMA(26)= 12.1508 - 12.2489 = -0.0981
    DEA=0+(-0.0981)X2/10=-0.01962
    BAR=2*((-0.0981)-(-0.01962))=-0.15696
 
 
Python运行效率确实不高,计算沪深两市10年来MACD日线金叉情况竟然需要运行10分钟,还是得换Java来。需要计算一下不同周期(日线,60分钟线...)低位二次金叉买入,死叉卖出的盈利和亏损情况。
原文地址:https://www.cnblogs.com/xhqgogogo/p/3386413.html