第1个回答 2020-12-28
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分钟线...)低位二次金叉买入,死叉卖出的盈利和亏损情况。