美股投資研究與學習

EMA 12/26 如何計算?用 Excel 手算 MACD 的第一步

EMA 的計算不是把最近十二筆價格直接平均,而是用當期價格更新前期 EMA。要在 Excel 算出能核對的 EMA12/26,關鍵有三件事:價格欄位一致、起始值寫清楚、計算過程保留精度。以下用完全假設的短序列示範公式,再說明如何與長歷史圖表比較,避免把一張教學小表當成成熟的市場數據。

權重公式:每一列都依賴上一列

常見 EMA 更新式是「當期 EMA=前期 EMA+α×(當期價格−前期 EMA)」,其中 α=2÷(N+1)。十二期的 α 為 2/13,二十六期為 2/27。StockCharts 的平均線文件說明這種權重與初始簡單平均的做法;Fidelity 的公式也使用前期 EMA 逐次更新。

同一公式也可寫成「α×當期價格+(1−α)×前期 EMA」。兩種形式相等,不需要在工作表同時放兩套主計算;可選一列用另一寫法作獨立驗算。十二期對新資料給較高權重,並不代表只保留最近十二根棒,之前的資料會透過前期結果逐步衰減。

以下全部以收市價作輸入,期數按觀察棒計,不插入沒有交易的日子。如果把開市價、調整後收市價與未調整價格混放,同樣的公式仍然能算出數字,卻失去了可比性。算得出來不等於資料定義正確。

先準備一份乾淨、由舊到新排序的價格表

假設六筆價格依序是三十、三十一、三十二、三十、三十三、三十四,標為 T0 至 T5,不對應真實股票或日曆日期。為了看清遞迴,這張小表採首價初始化:T0 的兩條 EMA 都設為三十。它不是宣稱六筆資料足以完成十二或二十六期暖機。

在真正資料中,日期和證券身份應跟價格一起保存。先檢查日期重複、排序顛倒、空白或文字價格,以及拆股前後是否使用同一口徑。不要遇到空白就填零;零是一個真實數值,會把平均大幅拉低,可能製造不存在的訊號。

若某天沒有交易,按資料定義保留缺少交易棒的事實。若本來應有行情卻未取得,先補正資料來源或標明不可計算,不能悄悄用上一日價格代替,再與另一平台的完整資料比較。

把首價初始化和 SMA 初始化分清楚

觀察點 假設收市價 EMA12:首價起步 EMA26:首價起步
T0 30.00 30.000000 30.000000
T1 31.00 30.153846 30.074074
T2 32.00 30.437870 30.216735
T3 30.00 30.370505 30.200681
T4 33.00 30.775043 30.408038
T5 34.00 31.271190 30.674109

另一種做法是用最初十二筆的 SMA 作為 EMA12 首值,EMA26 則用最初二十六筆的 SMA 起步。這時兩條線可使用的起始列不同,在兩者都存在以前,不應硬算完整 DIF。沒有足夠前置資料的欄位保持空白,比強行補零更誠實。

首價法便於教學,SMA 法是常見初始化方法,但無論用哪一種,都要把起點寫下來。用相同後續價格遞迴,初值差距通常會逐步縮小;若完全不說初值,只比較前幾行的末位數字,很容易把合理差異當成程式錯誤。

Excel 公式可以怎樣排

將 A 欄放觀察點,B 欄放收市價,C 欄放 EMA12,D 欄放 EMA26。第 二列是 T0,C2 與 D2 都等於 B2;從第三列開始,C3 輸入 =C2+(B3-C2)*2/13,D3 輸入 =D2+(B3-D2)*2/27,再向下填滿。這裡採首價法,只為對照上方示例。

計算保持原始精度,畫面可顯示六位小數,但不要每列都用 ROUND 截短後再遞迴。逐列四捨五入會讓誤差帶到下一行,長序列的差異可能因此累積。若需要顯示金額兩位小數,改儲存格格式即可,別把底層數值改成文字。

試算其中一筆:T1 的 EMA12 是 30+(31−30)×2/13,約為 30.153846;EMA26 約為 30.074074。下一列必須引用這些前期結果,不是又從三十重新開始。把上一列引用寫錯,往往比公式本身更難察覺。

實作:從教學表走到可核對的美股資料

  1. 先輸入六筆假設價格,完成兩條 EMA,核對上方小表。不要把這六筆標成 SPY 或任何真實股票。
  2. 另外取得合法可用的美股日線資料,記錄代碼、來源、下載日、價格調整及時區;將更早資料作前置計算。
  3. 事先選定初始化方法與可接受誤差,再比較同一天、相同口徑的平台 EMA12 與 EMA26。
  4. 把資料長度增加後重算,觀察比較日期的誤差是否縮小;不要只盯著最前面的暖機區間。
  5. 保留一份原始價格、一份公式及一份差異紀錄,讓每一筆結果能回到輸入數據。

你需要的完成品,是可追蹤輸入與公式的計算表,而不是只有兩條看起來很順的線。若仍無法對上,分別檢查數據、時間週期、價格欄位與初值;每次只改一項,才知道差異的來源。

反例:初值不同,不是立刻有一方算錯

假設兩個 EMA12 的起始值相差一元,之後每筆輸入完全相同。經過一次更新,差距變成 11/13 元;經過十次,差距為 (11/13) 的十次方,約零點一八八元。誤差會減弱,卻不會在第十二筆突然自動消失。這是遞迴式可直接推得的性質。

因此,拿只有短歷史的自算表對照平台長歷史值,末位不同是可以預期的。先確認差距是否符合初始化與資料長度的影響,再討論是否需要更多前置資料。也不宜宣稱某個固定暖機筆數能滿足所有價位、序列與精度需求。

EMA 計算正確,只代表平均值按所選方法更新。它沒有直接產生保證有效的買點,也不會解決資料授權、成交假設或風險管理;把公式驗證與交易評估分開,研究才不會跨越證據所能支持的範圍。

還有一項容易漏掉的人工檢查:輸入價格雖然看起來都是數字,實際上可能含貨幣符號、空格或千位分隔,已被試算表當成文字。先核對資料型別,再看公式是否被自動略過。若一段價格被反向排序,遞迴計算甚至會把後來的價格帶回較早日期;把時間軸畫出來,通常比只看最後一個結果更容易找出這種錯誤。

每次更換資料檔,也保留下載日期與檔案版本。歷史資料可能因調整或更正而改動,明確的來源版本能幫你分辨是公式改了,還是輸入已不同。

常見問題

EMA12 公式是甚麼?

常見做法為當期 EMA12=當期價格×2/13+前期 EMA12×11/13。第一筆 EMA 的來源仍需另外指定,不能只靠更新式得到。

Excel 為甚麼算出不同 EMA?

常見原因包括起始值、可用歷史長度、調整價格、排序、缺值及逐列四捨五入。先比資料與設定,再判斷公式是否錯誤。

EMA26 比 EMA12 慢嗎?

在相同輸入與方法下,二十六期對單筆新價格的權重較低,通常更平滑。這描述反應特性,不代表交易一定更好或更差。

參考來源:StockCharts:簡單與指數移動平均線、Fidelity:EMA 定義與遞迴計算。文中假設數據只供驗算,不代表實際行情或績效。

如需整體讀圖架構,可參考MACD 指標完整教學;其他工具的用途與限制,見技術指標教學。

本文供投資研究與學習,不構成個別投資建議。指標可能延遲或失效,投資可能損失本金。