本文目錄
最後更新日期:2026-09-27
目錄
1. 前言:2026 券商 API 串接到底在解決什麼問題?
2. 永豐金證券 Shioaji API:申請流程、模擬環境與 Python 安裝教學
3. 玉山證券與 Fugle(富果)API 的關係,別再搞混了
6. Python 自動下單實戰:從報價抓取到委託送出(以 Shioaji 為例)
8. 結語與行動建議
前言:2026 券商 API 串接到底在解決什麼問題?
如果你也曾經每天早上盯著盤勢手動下單、錯過關鍵進場點,那你一定能理解「2026 券商 API 串接」這件事有多重要。所謂券商 API 串接,簡單說就是透過程式碼直接跟券商的下單系統溝通,讓你可以用 Python 自動化下單、查詢庫存、抓取即時報價,不用再開著看盤軟體手動點按鈕。
這篇教學會完整走過「券商 API 串接 → 申請開通 → Python 自動下單」的全流程,以目前台灣散戶社群討論度最高的永豐金證券 Shioaji API 為主軸,同時也會整理元大、富邦、群益、玉山(搭配 Fugle)等券商的申請管道,讓你不管用哪一家都有清楚的查證方向。內容以公開文件與官方套件為主,不會假裝我幫你實測過每一家券商的績效,所有技術規格(下單頻率、延遲、手續費等)請以各券商最新官方公告為準,本文僅供程式教學與研究參考,不構成任何個股或券商投資建議。
永豐金證券 Shioaji API:申請流程、模擬環境與 Python 安裝教學
Shioaji 是永豐金證券官方開發與維護的 Python 交易 API,這點要先講清楚:它不是元大、不是富邦,而是永豐金證券自家的套件。之所以在台灣的程式交易社群討論度特別高,主要原因是官方文件與範例相對完整、GitHub 上的社群資源也多,對新手相對友善。
申請流程(概念說明)
以下是根據永豐金證券公開資訊整理的通用申請步驟,實際頁面與文件名稱請以官網為準:
1. 開立永豐金證券證券戶(已有帳戶可跳過)
2. 向營業員或透過官方線上管道申請 API 使用權限,部分帳戶可能需要額外簽署電子交易相關約定書
3. 取得 API Key 與 Secret Key:這組金鑰會用來登入 Shioaji,務必妥善保管,不要寫死在會上傳到公開 GitHub 的程式碼裡
4. 確認模擬環境(Simulation)帳號是否已開通:永豐金提供模擬交易環境,讓你在不動用真實資金的情況下測試程式邏輯
5. 安裝 Python 與 Shioaji 套件
審核時間依券商公告與個案而異,部分資格(例如帳戶資產或交易紀錄)也可能影響審核速度,建議申請前先向營業員確認清楚,避免白跑一趟。
如果你目前還沒有永豐金證券帳戶,可以先了解開戶流程:
模擬環境 vs 正式環境,差在哪?
這是新手最常搞混、也是後面地雷清單裡會再提到的重點:
| 項目 | 模擬環境(Simulation) | 正式環境(Production) |
|---|---|---|
| 資金 | 虛擬資金,不影響真實帳戶 | 真實資金,會實際成交扣款 |
| 用途 | 測試程式邏輯、委託回報機制 | 正式交易 |
| 切換方式 | `sj.Shioaji(simulation=True)` | `sj.Shioaji(simulation=False)` |
| 建議使用時機 | 開發階段、策略邏輯未驗證前 | 策略與風控機制都測試穩定後 |
強烈建議:任何新寫的程式邏輯,一律先在模擬環境跑過至少一段時間,確認委託送出、回報接收、例外處理都正常,再考慮切換到正式環境。
Python 安裝與基本登入步驟
安裝 Shioaji 套件非常單純,用 pip 即可:
# 終端機執行,不是寫在 .py 檔案裡
# pip install shioaji
安裝完成後,基本的登入流程如下(參數名稱可能隨套件版本調整,實際請以官方文件為準):
import shioaji as sj
# 用醒目常數標示目前環境,避免誤觸正式帳戶
IS_LIVE = False # True = 正式環境, False = 模擬環境
api = sj.Shioaji(simulation=not IS_LIVE)
try:
# api_key / secret_key 的取得方式請參考永豐金官方文件
api.login(api_key="你的API_KEY", secret_key="你的SECRET_KEY")
print(f"登入成功,目前環境:{'正式環境' if IS_LIVE else '模擬環境'}")
except Exception as e:
print(f"登入失敗:{e}")
raise
關於登入失敗的常見錯誤訊息類型:官方文件與社群討論中常見的錯誤多屬於「金鑰錯誤」「連線逾時」「憑證過期」這幾類,這類訊息通常代表金鑰輸入有誤、網路環境異常,或是憑證已經過期需要重新申請,實際錯誤代碼與訊息格式請以當下套件版本的回傳內容為準。
玉山證券與 Fugle(富果)API 的關係,別再搞混了
這裡要特別澄清一個常見的誤解:Fugle API 並不是富邦證券的產品。Fugle(富果)是一家獨立的金融科技公司,其交易相關 API 是與玉山證券合作提供,讓使用者可以透過富果的介面進行報價查詢與下單串接。
如果你是從其他文章或社群討論看到「富邦新一代 API」或「富邦 Fugle API」這類說法,建議直接以官方公告重新確認,因為這類描述容易把「富果公司」與「富邦證券」兩個名稱搞混。正確的對應關係大致是:
- Fugle(富果):獨立金融科技公司,開發報價與交易相關 API
- 玉山證券:與富果合作,提供交易帳戶串接
實際的合作細節、支援功能與申請條件,請以富果官網(搜尋「Fugle 富果」即可找到)與玉山證券官網的最新公告為準,本文不替代官方說明。
元大、富邦、群益券商 API:申請管道與查證清單
除了永豐金(Shioaji)與玉山證券(搭配 Fugle),元大證券、富邦證券、群益證券等也都有提供程式交易相關的 API 服務。由於各家券商的 API 名稱、版本與功能細節會隨時間調整,以下整理目前可公開查證的申請管道與查詢方向,不捏造無法確認的產品版本號,避免提供過時或錯誤的資訊誤導讀者。
元大證券
- 官方入口:元大證券官網(yuanta.com.tw)
- 查詢方式:於官網搜尋欄輸入「API」或「程式交易」,會導向其程式化交易相關專區與申請說明
- 建議動作:致電元大客服或洽詢營業員,確認目前提供的 API 套件名稱、申請資格與模擬環境支援狀況
富邦證券
- 官方入口:富邦證券官網(fbs.com.tw)
- 查詢方式:於官網搜尋「程式交易」或「API 下單」,會列出目前開放申請的相關服務與文件
- 建議動作:由於富邦證券與 Fugle 富果並非同一家公司(請參考前一段說明),申請前務必先確認你要串接的是富邦自家系統,還是透過第三方服務
群益證券
- 官方入口:群益證券官網(capital.com.tw)
- 查詢方式:於官網搜尋「API」或「程式交易」,可找到相關申請頁面與技術文件連結
- 建議動作:群益的社群討論資源相對較少,建議申請前多留意官方文件的更新日期,避免參照到舊版 API 說明
申請前的自我查證清單
不管是哪一家券商,申請前都建議用以下清單自我檢查一輪:
1. API 是官方自製還是第三方合作? 先搞清楚你要串接的套件是券商自己開發,還是像 Fugle 這樣的第三方合作產品,兩者的客服窗口與文件來源會不同
2. 是否有模擬環境? 沒有模擬環境的話,風險控管要更加謹慎
3. 申請資格與門檻? 部分券商會要求一定的資產規模或交易紀錄
4. 官方文件最後更新日期? 文件太久沒更新,可能代表套件已經有新版本但文件沒跟上
5. 下單頻率限制與手續費規則? 這些規則每年都可能調整,務必查當下最新公告
6. 憑證/金鑰的有效期限與更新流程? 務必確認過期後如何重新申請
建議的做法是:直接到該券商官網的「API/程式交易」專區,或致電客服詢問最新的申請方式與 API 名稱,不要完全依賴網路文章(包含本篇)上的舊資訊。
券商 API 選擇比較:程式交易券商怎麼挑最適合?
這是最常被問到的問題:「到底該選哪家券商的 API?」沒有標準答案,要看你的策略類型跟交易頻率。下表整理目前可查證的公開資訊,社群主觀印象僅供參考,非官方評分:
| 項目 | 永豐金證券 | 元大證券 | 富邦證券 | 群益證券 | 玉山證券 |
|---|---|---|---|---|---|
| API 名稱 | Shioaji(永豐金官方開發) | 請查官網最新公告 | 請查官網最新公告 | 請查官網最新公告 | 搭配 Fugle API(富果公司開發) |
| 開發/維護單位 | 永豐金證券 | 元大證券 | 富邦證券 | 群益證券 | Fugle 富果(獨立金融科技公司)與玉山證券合作 |
| 官方文件完整度(社群主觀) | 較完整,GitHub 範例多 | 請自行查證 | 請自行查證 | 請自行查證 | 中等 |
| 模擬環境 | 有提供 | 請查官網確認 | 請查官網確認 | 請查官網確認 | 請查官網確認 |
| 開通時間 | 依官方公告與個案而異 | 依官方公告與個案而異 | 依官方公告與個案而異 | 依官方公告與個案而異 | 依官方公告與個案而異 |
| 報價延遲 | 請自行於目標環境實測 | 請自行於目標環境實測 | 請自行於目標環境實測 | 請自行於目標環境實測 | 請自行於目標環境實測 |
| 社群資源 | 豐富(GitHub、論壇討論多) | 中等 | 中等 | 較少 | 中等 |
提醒:手續費折扣、下單頻率限制、API 規格等都會變動,下單前務必查閱各券商最新官方公告。想查證 Shioaji 相關資訊,可直接搜尋「sinotrade shioaji github」找到官方原始碼倉庫;Fugle 相關資訊可搜尋「fugle 富果 官方文件」,其餘券商建議直接以券商全名加上「API」在官網搜尋欄查詢。
開通時間與報價延遲之所以無法給出具體數字,是因為這兩項數據會隨網路環境、伺服器當下負載、申請人資格審核排程而大幅變動,給一個看似精確卻無法查證的數字,對你的實際決策反而沒有幫助,建議以上方清單自行向客服或官方文件確認。
Python 自動下單實戰:從報價抓取到委託送出(以 Shioaji 為例)
以下示範一個含模擬環境切換、錯誤處理、委託回報監聽、委託狀態查詢與登出收尾的完整範例,使用永豐金證券的 Shioaji 套件。請注意:套件 API 可能隨版本更新而調整參數名稱,實際使用前請對照當下安裝版本的官方文件。
import time
import shioaji as sj
# 用醒目的常數標示目前環境,避免誤觸正式帳戶
IS_LIVE = False # True = 正式環境, False = 模擬環境
api = sj.Shioaji(simulation=not IS_LIVE)
# 1. 登入
try:
api.login(api_key="你的API_KEY", secret_key="你的SECRET_KEY")
print(f"登入成功,目前環境:{'正式環境' if IS_LIVE else '模擬環境'}")
except Exception as e:
print(f"登入失敗:{e}")
raise
# 2. 設定委託回報(Order Callback)監聽
def on_order_event(stat):
print(f"[Order Callback] {stat}")
api.set_order_callback(on_order_event)
# 3. 抓取即時報價(教學範例,標的與數量請自行調整)
contract = api.Contracts.Stocks["2330"]
snapshot = api.snapshots([contract])
print("即時快照:", snapshot)
# 4. 建立委託單(僅為教學範例,價格與數量請自行調整)
order = api.Order(
price=580,
quantity=1,
action=sj.constant.Action.Buy,
price_type=sj.constant.StockPriceType.LMT,
order_type=sj.constant.OrderType.ROD,
account=api.stock_account,
)
# 5. 送出委託,並用 try/except 包裹,避免程式因單次下單失敗而整個崩潰
trade = None
try:
trade = api.place_order(contract, order)
print("委託送出成功,回傳物件如下:")
print(trade)
except Exception as e:
print(f"下單失敗:{e}")
# 6. 更新並查詢委託狀態
# 下單後交易所不會立即回報最終狀態,實務上常見作法是:
# 送出委託後稍待片刻,再呼叫 update_status 主動更新委託狀態
if trade is not None:
try:
time.sleep(1) # 教學範例:簡單等待,正式環境建議改用回報事件驅動
api.update_status(api.stock_account)
print("更新後的委託狀態:")
print(trade.status)
except Exception as e:
print(f"查詢委託狀態失敗:{e}")
# 7. 收尾:程式結束前務必登出,釋放連線資源
try:
api.logout()
print("已登出 Shioaji API")
except Exception as e:
print(f"登出時發生例外:{e}")
常見下單失敗情境與處理方式
在把程式交給自動化排程(例如排程器或雲端主機)長時間執行之前,建議先了解幾種常見的下單失敗情境,並確保程式碼有對應的處理邏輯:
| 失敗情境 | 常見原因 | 建議處理方式 |
|---|---|---|
| 委託價格不符交易所規則 | 價格跳動單位錯誤、超出漲跌停範圍 | 下單前先用程式檢查價格是否符合當日漲跌停與跳動單位 |
| 帳戶餘額或額度不足 | 可用資金不足、信用額度已用罄 | 下單前先查詢帳戶庫存與可用金額,避免無效委託 |
| 連線逾時或網路異常 | 本機網路不穩、券商伺服器當下負載高 | 在 `try/except` 中捕捉例外並記錄 log,必要時加入重試機制,但要避免無限重複下單 |
| 憑證或金鑰過期 | API Key/憑證超過有效期限 | 定期檢查憑證到期日,建立到期前的提醒機制 |
| 委託狀態未即時更新 | 回報尚未送達、網路延遲 | 搭配 `set_order_callback` 監聽回報事件,並定期呼叫 `update_status` 做二次確認 |
重要提醒:上述情境與處理方式屬於程式設計上的通用原則,實際錯誤代碼、例外型別與訊息內容,請以你當下安裝的套件版本與官方文件為準,不要只依賴單一篇文章的描述就直接上線正式環境交易。
結語:從「串接成功」到「安心自動化」的下一步
走完這篇教學,你應該已經清楚:
- 券商 API 串接的基本概念與申請流程
- 永豐金 Shioaji 的申請步驟、模擬環境與完整 Python 下單範例
- 玉山證券與 Fugle(富果)之間常被搞混的合作關係
- 元大、富邦、群益等券商的官方查詢管道與自我查證清單
- 常見下單失敗情境,以及如何用
try/except、update_status、logout讓程式更穩健
如果你還沒有券商帳戶,或是正在考慮開通 API 交易權限,建議先從開戶這一步開始準備,並全程先在模擬環境測試過一輪,確認程式邏輯與風控機制都沒問題,再評估是否切換到正式環境:
最後再次提醒:本文所有程式碼與流程僅供 Python 程式教學與研究參考,不構成任何個股或券商的投資建議,實際下單前務必以各券商最新官方公告與文件為準,並自行承擔交易風險。