04指标MACD - 附代码


具体计算公式及例子如下:

EMA(12)= 前一日EMA(12)×11/13+今日收盘价×2/13
EMA(26)= 前一日EMA(26)×25/27+今日收盘价×2/27
DIFF=今日EMA(12)- 今日EMA(26)
DEA(9)= 前一日DEA×8/10+今日DIF×2/10
BAR=2×(DIFF-DEA(9))
MACD在应用上,,先计算出快速移动平均线即12日的EMA1,和慢速移动平均线,即26日的EMA2,,以这两个数值之间的差值得出DIFF,,然后再求出DIFF的9日平滑移动平均线DEA(9),最后得出MACD=2×(DIFF-DEA(9)). 。
<1>计算12日和26日移动平均线EMA1和EMA2当日EMA(12)=前一日EMA(12)×11/13+当日收盘价×2/13当日EMA(26)=前一日EMA(26)×25/27+当日收盘价×2/27
<2>计算离差值(DIFF)DIFF=当日EMA(12)-当日EMA(26)
<3>计算9日离差平均值DEA当日DEA(9)=前一日DEA×8/10+当日DIFF×2/10
<4>计算MACD=2×(DIFF-DEA(9))
 <5>新股上市首日,初始化ema12=当日收盘价,ema26=当日收盘价 ,   其DIFF,DEA以及MACD都为0
close = [9.63, 8.54, 9.45, 8.58, 9.15, 11.82, 11.64, 11.29, 11.21, 11.74, 13.11, 12.24, 12.09, 12.22, 12.44, 14.61, 14.24, 15.16, 15.98, 15.03, 17.34, 17.18, 16.31, 16.8, 17.82, 18.68, 18.53, 18.25, 18.43, 19.19, 16.42, 17.32, 16.19, 16.14, 17.97, 14.33, 14.6, 14.05, 15.17, 14.23, 13.98, 13.25, 13.75, 13.75, 12.62, 11.15, 10.92, 11.46, 10.04, 11.04]

ema12 = []   #短期移动平均线(12日)
ema26 = []   #长期移动平均线(26日)
diff = []    #diff = EMA(12)-EMA(26)
dea9 = []    #DEA(9)= 前一日DEA×8/10+今日DIF×2/10
macd = []    #MACD=2×(DIFF-DEA(9))
#EMA(12)= 前一日EMA(12)×11/13 +当日收盘价×2/13
# EMA(26)= 前一日EMA(26)×25/27+当日收盘价×2/27
for i in range(len(close)):
    if 0==i:
        ema12.append(close[i])
        ema26.append(close[i])
    else:
        ema12.append(ema12[i-1]*(11/13)+close[i]*(2/13))
        ema26.append(ema26[i-1]*(25/27)+close[i]*(2/27))

#DIFF=当日EMA(12)- 当日EMA(26)
diff = list(map(lambda x:x[0]-x[1],zip(ema12,ema26)))
#DEA(9)= 前一日DEA×8/10+今日DIF×2/10
for i in range(len(diff)):
    if 0==i:
        dea9.append(diff[i])
    else:
        dea9.append(dea9[i-1]*(8/10)+diff[i]*(2/10))
macd = list(map(lambda x:2*(x[0]-x[1]),zip(diff,dea9)))

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM