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