群益API 版本升級要注意什麼?9996、Interop 與升級後的驗證
某天開始,登入回了一個沒看過的 9996,程式明明沒改。或是換了新版元件,程式載得起來,新版才有的函式卻呼叫不到。又或者,你根本不確定自己現在跑的是哪一版。
群益API 版本升級要處理的,就是這幾件事。先講結論:升級不只是換一個 DLL,元件與 Interop 要一起換、程式要重新建置、換完要驗證。

目錄
群益API 版本升級為什麼不只是換一個 DLL?
用 C# 串接群益API 時,牽涉到兩個檔案:
| 檔案 | 是什麼 |
|---|---|
SKCOM.dll | 群益API 的元件本體,要註冊到系統 |
Interop.SKCOMLib.dll | 你的程式參考的 Interop 組件,程式透過它呼叫元件 |
升級時兩個都要換。依官方元件說明文件的更版步驟,註冊新版元件後,要確認專案「參考」裡 SKCOMLib 的路徑指到新版本。換完之後,我們會把程式重新建置一次。
登入回 9996 代表什麼?該怎麼處理?
官方錯誤代碼表的說明是:
| 代碼 | 常數 | 官方說明 |
|---|---|---|
9996 | SK_ERROR_UPDATE_API_REQUIRED | 此版本已無法登入,請更新版本。 |
這個錯誤碼是 V2.13.59 新增的,官方改版紀錄把它列在「功能新增」:「新增錯誤代碼9996 SK_ERROR_UPDATE_API_REQUIRED此版本已無法登入,請更新版本」。
遇到 9996,程式本身沒辦法解決,要更新元件版本。 登入錯誤碼怎麼分類、怎麼判讀,見〈群益API 登入錯誤怎麼判讀〉,本文只補充部署端要做的兩件事:
- 訊息直接告訴使用者「請更新程式」,不要只顯示一個數字。
- 安裝包裡的元件也要跟著更新。 這是我們的提醒:如果你把程式打包給別人用,包裡的元件版本就是對方的版本;一旦那個版本無法登入,拿到這個包的人都會碰到 9996。
至於哪些版本、什麼時候會開始回 9996,官方沒有公告時程。
只換 SKCOM.dll、不換 Interop 會怎樣?
以下是我們在 V2.13.58 升到 V2.13.59 這一次的實測,不是官方記載,也不代表每一版都一樣。
- 舊的 Interop 搭新的
SKCOM.dll:載得起來。 四個主要物件(Center、Order、Quote、Reply)都建立成功,呼叫SKCenterLib_GetSKAPIVersionAndBit也回傳新版的版本字串。 - 但這組測試只到「載入與呼叫」,我們沒有用舊 Interop 跑登入或下單。我們對登入、下單、成交、回報解析的實單驗證,是換成新 Interop 之後才做的。
- 要用新版新增的功能,一定要換新 Interop。 舊 Interop 裡沒有新函式的定義。以 V2.13.59 為例,官方改版紀錄列出的新函式有
SKQuoteLib_GetLiveKLineLONG(即時分K)與SKQuoteLib_EnterMonitorLONGByMarket(可指定訂閱市場的連線函式)。
所以,程式載得起來,不代表升級完成。
怎麼確認現在跑的是哪一版?
呼叫 SKCenterLib_GetSKAPIVersionAndBit。官方說明是「取得目前註冊SKAPI 版本及位元。」,回傳值是「目前註冊SKAPI版本及COM位元。(EX: 2.13.30_x64)」。參數是使用者登入帳號。
升級後呼叫一次、把結果印出來,確認版本與位元(x64 或 x86)都是你預期的:
// 確認目前註冊的元件版本與位元
// 官方回傳值說明:目前註冊SKAPI版本及COM位元。(EX: 2.13.30_x64)
string ver = m_pSKCenter.SKCenterLib_GetSKAPIVersionAndBit("YOUR_LOGIN_ID");
Log("SKAPI version: " + ver);Log是示意名稱,換成你自己的記錄方式。- 官方沒有說明這個函式要在登入前還是登入後呼叫,片段只示範呼叫方式,不代表呼叫時機。
群益API 版本升級該照什麼順序?
官方元件說明文件第 2 章有更版步驟,重點是三件事:
- 先解除安裝舊版本,再安裝新版本。 x86 與 x64 元件擇一註冊,不要混用。
- 元件位元要跟程式的執行平台一致。 官方列出的錯誤範例是:裝了 x86 的元件,程式卻用 Any CPU 或 x64 平台執行;或裝了 x64 的元件,程式卻用 x86 平台執行。
- 確認專案參考指到新版本,並把舊版本取消註冊。
在官方步驟之外,我們建議再做兩件事:
- 換之前先備份目前可用的元件與 Interop,出問題時才退得回去。
- 換完實際跑一次登入、報價、下單、回報,再加上前一節的版本查詢。
完整的順序整理如下:
- 備份目前可用的元件與 Interop。
- 解除安裝(取消註冊)舊元件,安裝(註冊)新元件。註冊失敗的排查見〈群益API 註冊失敗怎麼處理〉。
- 專案參考指到新版 Interop,程式重新建置。
- 呼叫
SKCenterLib_GetSKAPIVersionAndBit確認版本與位元。 - 實際跑一次登入、報價、下單、回報。
- 更新安裝包裡的元件。
新版文件找不到某個功能,代表拿掉了嗎?
不一定。新版官方文件的章節可能會調整,文件找不到,不代表元件拿掉了。
先確認元件裡還有沒有那個函式或事件,再實際呼叫測一次:例如在開發環境裡看不看得到它。看得到只代表型別還在,不代表功能可用,所以還要實際測過。不要只看文件有沒有那一章。
商品清單查詢要接哪一個事件?
查商品清單用的是 SKQuoteLib_RequestStockList。官方資料對「結果從哪個事件回來」有兩種寫法:
| 來源 | 內容 |
|---|---|
官方元件說明文件的 SKQuoteLib_RequestStockList,「相關通知事件」欄 | OnNotifyStockList |
| 官方 V2 範例程式(2.13.57 C# 版)的報價頁 | 接的是 OnNotifyCommodityListWithTypeNo |
| 官方改版紀錄 2.13.52 | 把 OnNotifyStockList、OnNotifyCommodityListWithTypeNo 並列為商品清單事件 |
建議兩個事件都掛上。要注意的是不要讓資料加倍:同一個市場的商品清單只採用一個事件的資料,不要兩份都加進去。
兩個事件的資料格式也不一樣。依官方說明,OnNotifyCommodityListWithTypeNo 的資料開頭帶有類別代碼與類別中文名稱,格式是「%類別代碼%類別中文名稱%」,例如 %1%水泥%;要去掉這一段,才會跟 OnNotifyStockList 的逐筆格式一致。兩個事件在資料全部回傳完畢時,都會再送一筆以「##」開頭的內容,表示查詢結束。
群益API 版本升級的 4 個誤解
- 很多人以為程式沒改就不會突然登入失敗;其實官方在 V2.13.59 新增了
9996「此版本已無法登入,請更新版本」,元件版本本身也可能是原因。 - 很多人以為換了新的
SKCOM.dll就算升級完成;其實要連 Interop 一起換、重新建置,新功能才用得到。 - 很多人以為程式載得起來就代表版本對了;其實要呼叫
SKCenterLib_GetSKAPIVersionAndBit看一次才確定。 - 很多人以為只要自己更新就好;其實打包給別人的安裝包也要跟著更新。
常見問題
群益API 登入回 9996,改程式能解決嗎?
不能。官方說明是「此版本已無法登入,請更新版本」,要更新元件版本。如果你的程式有給別人用,安裝包裡的元件也要一起更新。
只換 SKCOM.dll、不換 Interop 可以嗎?
我們在 V2.13.58 升到 V2.13.59 這一次測到,舊 Interop 仍能載入新元件,但這只驗證到載入與呼叫。要用新版新增的函式,一定要換新 Interop;我們的實單驗證也是換新 Interop 之後才做的。
怎麼知道目前註冊的是哪一版、幾位元?
呼叫 SKCenterLib_GetSKAPIVersionAndBit,回傳值會是像 2.13.30_x64 這樣的字串,包含版本與位元。
新版文件找不到某個功能,就代表不能用了嗎?
不一定。文件的章節可能會調整。先確認元件裡還有沒有那個函式或事件,再實際呼叫測一次;看得到不代表功能可用。
風險揭露
期貨與選擇權屬高槓桿商品,價格波動可能造成超過原始保證金的損失,交易人須自負交易責任。本文為程式開發技術教學,說明元件版本升級時的注意事項,不構成投資建議,也不保證任何交易結果。程式化交易並不降低市場風險,升級後若未完整驗證就上線,程式可能在市場變化時無法正常送出或處理委託。
投資人教育資源
| 機構 | 資源 |
|---|---|
| 臺灣期貨交易所(TAIFEX) | 期貨及選擇權數位學習網 |
| 證券暨期貨市場發展基金會 | 證券期貨市場教育推廣 |
| 金融智慧網 | 金管會金融知識平台 |
| 中華民國期貨業商業同業公會 | 期貨業法規與宣導 |
| 證券投資人及期貨交易人保護中心 | 投資人保護與申訴 |
延伸閱讀
- 〈群益API 登入錯誤怎麼判讀〉——9996 與其他登入錯誤碼的判讀。
- 〈群益API 註冊失敗怎麼處理〉——註冊新版元件時遇到的問題。
- 〈群益API 是什麼〉——開始之前的 5 個前提,其中一個就是版本會變。
參考資料
9996的定義、V2.13.59 改版紀錄、SKCenterLib_GetSKAPIVersionAndBit的說明與回傳值、更版步驟、商品清單事件的相關說明,依群益官方元件說明文件(V2.13.59)。- 商品清單事件的範例寫法,依群益官方 V2 範例程式(2.13.57 C# 版)。
- 舊 Interop 搭新元件的測試、備份與實單驗證:我們環境的實測與做法,非官方文件記載。
免責聲明
本文章僅作為群益API實作經驗分享,不構成投資建議,且策略及程式皆應自行撰寫。期貨及衍生性金融商品交易屬高風險投資,請謹慎評估自身風險承擔能力。







