一分鐘精華摘要:
用 Excel 接即時報價,最常見的做法是 DDE。DDE 公式像一個地址:「應用程式|主題!項目」三段,依序是哪個程式、哪一類資料、哪個欄位,Excel 照這個地址去看盤軟體拿報價,價格一跳,儲存格就跟著跳。三段的名稱每套軟體不同,以軟體自己的說明為準。報價進到 Excel 後,可以用 VBA 每隔幾秒記一筆,也能在旁邊直接算選擇權理論價和帳戶的整體槓桿。Excel 的信任中心裡有兩個 DDE 開關,接報價只需要第一個。要看盤後的歷史資料,期交所開放資料可以直接匯進 Excel。
「選擇權報價可以直接拉進 Excel 嗎?」「DDE 公式到底要怎麼寫?」「能不能讓 Excel 每五秒幫我記一次價格?」
這篇講 DDE 怎麼運作、公式怎麼寫、Excel 要先看懂哪兩個設定,再給一段可以直接貼上的 VBA 記錄程式,最後用接進來的報價算一次選擇權理論價和整體槓桿。
一、DDE 是什麼:照地址去拿報價
DDE(動態資料交換)是 Windows 上程式和程式互相傳資料的方式。看盤軟體有提供 DDE 的話,Excel 就能在儲存格寫一條公式,向它要報價。公式的形狀是這樣:
=應用程式|主題!項目
| 部分 | 像地址的 | 填什麼 |
|---|---|---|
| 應用程式 | 縣市 | 提供報價的那個程式 |
| 主題 | 路名 | 哪一類資料,常見是某一檔商品 |
| 項目 | 門牌 | 那一檔的哪個欄位,例如成交價、買價、賣價、總量 |
三段要填的名稱由看盤軟體自己訂,每套都不一樣。先去軟體的說明文件或設定裡找 DDE 的寫法;軟體有提供複製公式的功能,直接貼進儲存格最不容易打錯。主題或項目常要填商品代號,台指期的代號是「TXF+月份字母+年份最後一碼」,例如 2026 年 11 月是 TXFK6,換月之後公式也要跟著改。
看盤軟體要先開著,Excel 才拿得到資料。公式寫對之後,報價每跳一次,儲存格就跟著更新,不用按重新整理。
延伸閱讀:
二、Excel 要先看懂的兩個開關
DDE 的設定在 Excel 的「檔案 > 選項 > 信任中心 > 信任中心設定 > 外部內容」,裡面有兩個開關:
| 設定(英文介面原名) | 預設 | 作用 |
|---|---|---|
| DDE 伺服器查閱(Enable Dynamic Data Exchange Server Lookup) | 開啟 | 讓 Excel 去找已經開著的程式要資料 |
| DDE 伺服器啟動(Enable Dynamic Data Exchange Server Launch) | 關閉 | 讓 Excel 自己把還沒開的程式叫起來 |
接報價只用得到第一個:先把看盤軟體開好,Excel 找得到它就行。第二個微軟建議維持關閉,打開之後,試算表裡的 DDE 公式就能自己啟動電腦上的程式,別人寄來的檔案也一樣。微軟的文件把 DDE 稱為比較舊、不安全的技術,所以來路不明的 Excel 檔,跳出要啟動程式或更新連結的提示時,先按否。
三、用 VBA 每隔幾秒記一筆
DDE 只顯示「現在」的價格,不會留下紀錄。想留下價格走過的軌跡,可以用 VBA 定時把儲存格的數字抄到另一張表。
準備兩張工作表,一張叫「報價」、一張叫「紀錄」,在「報價」的 B2 放 DDE 公式。按 Alt+F11 打開 VBA 編輯器,插入一個模組,貼上這段:
Public nextRun As Date
Sub StartLog()
nextRun = Now + TimeValue("00:00:05")
Application.OnTime nextRun, "LogQuote"
End Sub
Sub LogQuote()
Dim ws As Worksheet, r As Long
Set ws = Worksheets("紀錄")
r = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
ws.Cells(r, 1).Value = Now
ws.Cells(r, 2).Value = Worksheets("報價").Range("B2").Value
StartLog
End Sub
Sub StopLog()
On Error Resume Next
Application.OnTime nextRun, "LogQuote", , False
End Sub
| 程式 | 做什麼 |
|---|---|
| StartLog | 排定 5 秒後執行一次 LogQuote |
| LogQuote | 把現在時間和 B2 的價格寫到「紀錄」最後一列,再排下一次 |
| StopLog | 取消排好的下一次,停止記錄 |
執行 StartLog 開始記,執行 StopLog 停下來;檔案要存成「啟用巨集的活頁簿」(.xlsm)。每 5 秒一筆,日盤 8:45 到 13:45 一天大約 3,600 筆,想記得疏一點,把 00:00:05 改大就好。不想在儲存格放公式,也可以在 VBA 裡用 DDEInitiate、DDERequest 直接向軟體要資料,名稱一樣照軟體的說明填。
這段程式只抄數字,不會下單。
延伸閱讀:
四、報價接進來之後:在旁邊算理論價和槓桿
報價會自己跳,旁邊的公式也會跟著重算。拿 2026 年 11 月 11 日的報價當例子:12 月臺股期貨 44,150 點,履約價 44,000 的 12 月買權,剩 35 天,波動率填 32.4%,用 Black 模型、利率當 0:
| 儲存格 | 放什麼 | 例子 |
|---|---|---|
| B2 | 期貨價格(DDE 公式) | 44,150 |
| B3 | 履約價 | 44,000 |
| B4 | 剩幾天 | 35 |
| B5 | 波動率 | 32.4% |
| B6 | d1 | 公式見下面 |
| B7 | 買權理論價 | 公式見下面 |
B6:=(LN(B2/B3)+B5^2/2*B4/365)/(B5*SQRT(B4/365))
B7:=B2*NORM.S.DIST(B6,TRUE)-B3*NORM.S.DIST(B6-B5*SQRT(B4/365),TRUE)
算出來約 1,839 點,跟當天這個買權的結算價 1,840 點差不多。期貨價格一跳,B7 就跟著變,可以看到理論價怎麼隨行情走。
帳戶的整體槓桿也能這樣即時算:
整體槓桿 = 期貨價格 × 每點金額 × 口數 ÷ 權益數
假設做多 3 口微台,每點 10 元,權益數 500,000 元:44,150 × 10 × 3=1,324,500 元,槓桿約 2.6 倍。要維持三倍以下,權益數至少要 441,500 元。行情往不利的方向走、權益數變少時,這格會自己往上跳,比收盤後才算早看到。
延伸閱讀:
五、盤後資料:期交所開放資料直接匯進 Excel
DDE 拿的是盤中的即時報價。要看每天收盤後的整理資料,可以用期交所的開放資料:在政府開放資料或期交所網站搜尋「選擇權每日交易行情」,複製 CSV 的下載連結,在 Excel 的「資料 > 從 Web」貼上,就能把整張表匯進來。
| 欄位 | 用途 |
|---|---|
| 契約、到期月份、履約價、買賣權 | 篩出想看的那一檔,例如臺指選擇權 TXO |
| 成交量、未沖銷契約量 | 看哪些履約價最多人交易、留倉 |
| 結算價 | 當天的結算價,可以拿來對照理論價 |
| 交易時段 | 分「一般」和「盤後」,盤後時段沒有結算價和未沖銷量,篩「一般」 |
之後每次按重新整理,就會抓到最新一個交易日的資料。要做好幾年的回測,期交所網站另外有每年的選擇權行情檔可以下載。
延伸閱讀:
常見問題
Q1:選擇權的 DDE 公式怎麼寫?
形狀是「=應用程式|主題!項目」:哪個程式、哪一檔商品、哪個欄位。三段的名稱每套看盤軟體不同,照軟體的說明文件填;有提供複製公式的功能,直接複製貼上最不容易錯。
Q2:DDE 抓不到報價怎麼辦?
依序檢查四件事:看盤軟體有沒有開著、公式三段的名稱有沒有打錯、信任中心的「DDE 伺服器查閱」有沒有開、商品代號是不是還停在上個月的合約。
Q3:VBA 可以幫我自動下單嗎?
這篇的程式只記錄價格和計算,不會下單。要讓程式送出委託,要走期貨商提供的下單 API,而且上線前要先回測、算進滑價和稅,再用小部位試。
延伸閱讀:
總結:先讓報價進來,再讓 Excel 幫你算
DDE 公式像一個地址,照「應用程式|主題!項目」寫,名稱以看盤軟體的說明為準,信任中心只要開伺服器查閱就夠。報價進到 Excel 之後,VBA 可以每隔幾秒記一筆,旁邊的儲存格可以即時算選擇權理論價和整體槓桿,讓帳戶維持在三倍以下時一眼就看得到。盤後的整理資料,就交給期交所的開放資料。
程式交易系列: