美股投資研究與學習

用 Excel 自製 MACD 計算表:EMA、DIFF、DEA 與柱狀圖

用 Excel 自製 MACD 計算表,最重要的不是畫出兩條線,而是每一列都能核對:輸入哪種價格、EMA 從哪個值開始、DEA 平滑哪一欄,以及柱體是否乘 2。這些選擇透明後,平台數字不一致才有方向排查。

以下公式可直接在英文函數、逗號分隔的 Excel 工作表使用。範例只有六筆假設收市價,並非真實行情,也不足以作為交易或績效判斷;它的用途是驗證公式與欄位關係。

Excel MACD:種子、遞迴、核對;第2列:首筆種子;第3列:遞迴更新;第3列:檢查值
假設價格 100、102、101、103、100、104;非真實行情 點擊圖片可開啟大圖。

欄位、順序與種子:先把第一列設定正確

第一列填標題:A=日期或序號、B=收市價、C=EMA12、D=EMA26、E=DIF、F=DEA、G=一倍柱體、H=二倍柱體。數值資料從第二列開始,必須由舊至新排列;同一根不可重複。週末沒有日線就不補一個零價格,真正缺少的交易日資料則先查清楚。

在 B2:B7 依序輸入 100、102、101、103、100、104,A2:A7 可用序號 1 至 6。本文種子明訂為首筆收市價:C2=B2、D2=B2;E2=C2−D2=0,F2=E2=0,G2=E2−F2=0,H2=2×G2=0。不要把價格 EMA 從零開始。

以下每行左側是儲存格位置;貼入該格時,只複製由等號開始的公式內容。

C2 =B2
D2 =B2
E2 =C2-D2
F2 =E2
G2 =E2-F2
H2 =2*G2

這是首價種子版本,不是先取十二或二十六筆 SMA 的版本。Fidelity 的 EMA 計算說明使用前期 EMA,並提及以 SMA 初始化的方式;比較任何平台時,應先確認所用版本,而非假設所有初值一樣。

EMA12、EMA26:從第三列填入遞迴公式

一般式 EMAt=α×當期收市+(1−α)×前期 EMA,其中 α=2÷(N+1)。十二根係數為 2/13,二十六根為 2/27。注意分母是 N+1,不是 N;兩個係數不同,不能複製快線公式後只換欄名。

C3 =(2/(12+1))*B3+(1-2/(12+1))*C2
D3 =(2/(26+1))*B3+(1-2/(26+1))*D2

向下填滿時,第三列公式會自然變成第四列的當期價格與上一列 EMA。不要把上一列位置加上絕對參照,否則每一列都會錯誤地使用第一筆種子。若另外把參數放在設定儲存格,參數才需固定參照;價格與前期 EMA 仍須逐列移動。

公式內先使用括號明確分組,不靠目測猜計算順序。Microsoft 的 Excel 運算子說明列出乘除、加減與比較規則。本文程式區用 ASCII 減號和星號,可避免把文章中的排版符號誤貼成公式。

DIF、DEA:訊號線平滑的是差值,不是收市價

E3 =C3-D3
F3 =(2/(9+1))*E3+(1-2/(9+1))*F2
G3 =E3-F3
H3 =2*G3

將 C3:H3 一起向下填到第七列。DEA 九根的係數為 0.2,輸入是當列 E 的 DIF;若 F 欄誤用 B 欄,就得到另一條價格 EMA,並不是 MACD 訊號線。DIFF 與 DIF 常是同一差值的命名差異,仍要核對平台定義。

首價種子、未提前四捨五入的檢查值;畫面顯示八位小數
Excel 列/收市 EMA12 EMA26 DIF DEA 一倍柱體
3/102 100.30769231 100.14814815 0.15954416 0.03190883 0.12763533
4/101 100.41420118 100.21124829 0.20295290 0.06611765 0.13683525
7/104 101.19676913 100.65451173 0.54225739 0.24079543 0.30146196

以第三列為例,DIF=100.30769231−100.14814815,約 0.15954416;DEA 約 0.03190883,因此一倍柱約 0.12763533,二倍柱約 0.25527066。正式計算保留完整儲存精度,只把儲存格顯示設為小數八位;不要逐列使用 ROUND 裁短再遞迴。

一倍、二倍與過零:先對定義,再畫圖

G 欄是本文使用的 Histogram=DIF−DEA,未乘 2;H 欄只供核對採二倍柱體的平台。兩欄的過零時間相同、幅度相差兩倍,不能把 H 欄較高的柱誤當動能較強或策略更好。

可用 A 作橫軸,E、F 作折線,G 作柱狀;零線保持可辨識。它們同為價格差值,避免在圖表中給柱體一個未註明的獨立縮放,令柱高與兩線距離看來不相稱。價格 B 欄則放另一張圖,不要用同一縱軸壓扁 MACD。

若要標記金叉,在第三列輸入 =AND(E2<=F2,E3>F3),代表前列不高於、當列高於。這只標記事件,沒有加入下一根成交或成本。初始列 DIF=DEA=0,下一列轉正可能只是初始化影響,不應當成實際交易證據。

實作:先核對六筆,再擴展到正式資料

  1. 建立上述八欄,逐一輸入種子與第三列公式,檢查三組表中數值。
  2. 核對每列 G=E−F、H=2G;兩欄過零標記應一致。
  3. 另複製一張測試表,改動一筆收市價,確認之後 EMA 與 DEA 連續更新,之前的列不會改變。
  4. 換入有授權的美股日線資料時,記錄來源、下載日期、價格調整、週期與前置資料長度,先處理空值和文字格式。

暖機不是把某個根數一刀切成「必然正確」。對 EMA26,種子差異在一百次遞迴後的係數為(25/27)100,約 0.0004546,即原始差異的 0.04546%;這只談單條 EMA 的權重,不保證 DEA 或所有平台已完全相同。可增加前置資料,觀察正式評估期的差異是否已低於事先選定容許誤差。

排錯反例:數字順滑,也可能每列都在算錯

常見錯誤包括日期倒排、把缺值當零、快慢欄互換、DEA 引用收市價,以及每列都鎖回第一個 EMA。這些錯誤有時仍能畫出平滑曲線,因此「看起來像」不是驗證。先核對第二筆更新,再核對中間與最後一筆,比只看整張圖有效。

若與券商數字不一致,依次檢查輸入價格、企業行動調整、K 線時段、參數、歷史起點、種子與柱體倍數。公式正確也不會自動產生可獲利規則;讀圖可參閱MACD 教學,其他工具可見技術指標教學。

常見問題

Excel 可以直接算 MACD 嗎?

可以,以上用基本四則運算逐列遞迴,不需專用外掛。必須先備妥連續、有定義的輸入與透明種子,才有可比較的數字。

為何 Excel 和券商軟件數字不同?

可能是價格調整、歷史長度、時段、種子或一倍二倍柱不同。先比較 EMA 與 DIF,再查 DEA 和柱體,較容易定位差異。

MACD 可以用收市價以外的價格嗎?

數學上可以替換輸入,但會形成不同序列。若改典型價格或其他來源,必須明訂並一致使用,不能仍聲稱與收市價版本相同。

本文供投資研究與學習參考,不構成個別投資建議;指標與假設算例不保證未來報酬,投資可能損失本金。