跳到主要內容

MACD公式計算步驟 (附上Excel範例)



MACD 全名叫 [指數平滑異同移動平均線]。

找了很多資料,有些網站給的公式和計算方式都有點不太一樣,直接看數學公式實在太辛苦了,花了點時間整理和比對看盤軟體,再用Excel驗算整理出來給需要的人。

大家普遍使用MACD(12,26,9),就是12日與26日的EMA(指數平滑平均值),與9日MACD值,目前也還沒看到有人用其它的參數,其計算步驟如下:
  1. 每日需求指數(Demand Index,DI),DI = (最高價 + 最低價 + 2 × 收盤價) ÷ 4。 (註1) 
  2. 首日EMA12 = 12天內DI 總和 ÷ 12 
  3. 首日EMA26 = 26天內DI 總和 ÷ 26 
  4. 當日平滑修正值 EMA12 = [前一日EMA12 × (12 - 1) + 今日DI × 2] ÷ (12+1)
    簡化後 EMA12 = 前一日EMA12 × (11/13) + 今日DI × 2/13 
  5. 當日平滑修正值 EMA26 = [前一日EMA26 × (26 - 1) + 今日DI × 2] ÷ (26+1)
    簡化後 EMA26 = 前一日EMA26 × (25/27) + 今日DI × 2/27 
  6. 差離值DIF = 12日EMA - 26日EMA 
  7. 首日MACD = 9天內DIF總和 ÷ 9 
  8. MACD = (前一日MACD × (9 - 1) + 今日DIF × 2) ÷ (9 + 1)
    簡化後 MACD = (前一日MACD × 8/10 + 今日DIF × 2/10 
  9. OSC = DIF - MACD 

註1: 有些人會直接用收盤價,範例檔有比較使用收盤價直接來當DI值,結果差異不太大,OSC柱反轉時間與比例都沒有不同天的問題。

註: EMA26就需要26天的日K資料,MACD9就需要累積9天,也就是要有34天的日K棒才算的出來MACD值。

註: 指數平滑移動平均線 EMA(Exponential Moving Average),是以指數方式遞減愈久資料權重的移動平均,相對於簡單移動平均來說,更加重了近幾日值的權重,也較能反應短期的波動,算是中短線的指標。


Excel範例,以加權指數為例,下載連結:MACD.xls

留言

  1. 不好意思,請問一下,我看了你的EXCEL檔以後,發現你沒有使用"當日平滑修正值 ",請問這個"當日平滑修正值 "是做什麼用的?為什麼需要這個東西?

    回覆刪除
  2. 我有用當日平滑修正值啊! 
    當日平滑修正值是為了程式化方便,在計算時只要拿前一天的結果來計算就好了,真的要準當然還是乖乖的照公式算,但為了計算快速(以前的電腦比較慢吧),才搞出來的吧,反正值不會差太多,就勉強接受了。
    不過久而久之,反而變成用當日平滑修正值才是對的,積非成是吧。

    回覆刪除
  3. Excel file 是否已移除,能不能再度享。謝謝

    回覆刪除
  4. 大大你好喔
    如果想用 繪製 週 MACD 那要怎麼辦呢?

    回覆刪除
  5. 可否請樓主 也作一章 (RSI) 的Excel範例
    我弄來弄去都好像不對 也不知道那一點出錯

    回覆刪除
  6. 作者已經移除這則留言。

    回覆刪除
  7. 謝謝,照做成功了,非常感謝!網上其他文章、python ta library 算出來都與台灣各看盤軟體不同!難得這篇文章演示的 excel 公式計算結果與富邦 e01 軟體一致。

    回覆刪除
  8. 感謝分享 學會MACD公式計算了

    回覆刪除

張貼留言

這個網誌中的熱門文章

Hinet 郵件伺服器列表及各ISP Smtp Server 免費的Smtp

Hinet Smtp 限制只能用Hinet 的IP來寄,以免費穩定的Smtp來說算是不錯的,丟到垃圾信箱的比例也低一些,但缺點是程式寄送的速度頻率太高容易掛掉,使用單用一個msa.hinet.net來寄,似乎晚上很容易會擠到爆掉,乾脆把全部的smtp都拉進來平均分配著寄,再用多執行緒寄應該比較穩一點,也快多了。 Hinet 郵件伺服器

台股還原權息K線圖計算公式流程 (附google試算表範例)

台股每年都有配股配息,配下來後股價會折算下來,使得K線圖呈現上變的不連續,造成短期內技術分析指標失真,長期下來也不容易真正看出投資這家公司在投報率上到底是多少? 工作上被要求了幾次還原權息K線圖的功能,一直沒有很好的去研究,這次花了點時間去弄了個試算表,搭配比對程式,也比較容易找出程式問題,寫好了也順手分享。 計算還原權息的原理其實也挺簡單的,就是先計算出每個交易日的漲跌幅,再由最後一筆收盤價去回推過去的收盤價,再依比例算出開盤 高點 低點價格。 其中會有問題的是在除權息當日的昨收價,會因為股票股利與現金股利折算後需要做修正,修正的公式為: 昨收 價  (新) = ( 昨收價 - 現金股利 ) / ( 1 + 股票股利 / 10 ) 例如:昨收 10.0  股票股利 1.0 現金股利 1.0  (10 - 1) / (1 + 1/10) = 8.182 參考工具: https://histock.tw/stock/financial.aspx?no=1101&t=2 除權除息參考價試算: https://www.tpex.org.tw/web/stock/exright/exref/rightref.php?l=zh-tw 再用新的昨收價來計算當日的漲跌幅,就可以得到修正後的漲跌幅。 漲跌幅 = ( 收盤 - 昨收 ) / 昨收 下圖是計算的範例, 在 1/5 配息5塊,原本 1/4 收盤 20.0,修正後會變成收盤 20-5 = 15.0,1/5 的漲跌幅修正後為 -6.67% 在 1/15 配股1塊,原本 1/14 收盤 20.0,修正後會變成收盤 20/(1+1/10) = 18.18,1/15 的漲跌幅修正後為 4.50% 回推還原權息後的股價,再拉一次漲跌幅來驗算,上圖的兩個紅框漲跌幅數值應該要一樣才是正確的。 前一日 收盤價 (還原)  = 今日收盤價 / (1 + 漲跌幅) 最後附上xls試算範例檔  還原權息試算 台泥(1101) 至於開盤價 高點 低點 的還原權息價位,再用跟收盤價的比例去計算就可以了。 開盤 (還原) = 收盤 (還原) * (1 + ( 開盤 - 收盤 ) / 收盤 ) 高點  (還原) = 收盤 (還原) * ...