2026 券商 API 串接完整教學:從申請開通到 Python 自動下單實戰(以永豐金 Shioaji 為主案例)

本文目錄
  1. 目錄
  2. 前言:2026 券商 API 串接到底在解決什麼問題?
  3. 永豐金證券 Shioaji API:申請流程、模擬環境與 Python 安裝教學
  4. 玉山證券與 Fugle(富果)API 的關係,別再搞混了
  5. 元大、富邦、群益券商 API:申請管道與查證清單
  6. 券商 API 選擇比較:程式交易券商怎麼挑最適合?
  7. Python 自動下單實戰:從報價抓取到委託送出(以 Shioaji 為例)
  8. 常見下單失敗情境與處理方式
  9. 結語:從「串接成功」到「安心自動化」的下一步

最後更新日期:2026-09-27

目錄

1. 前言:2026 券商 API 串接到底在解決什麼問題?

2. 永豐金證券 Shioaji API:申請流程、模擬環境與 Python 安裝教學

3. 玉山證券與 Fugle(富果)API 的關係,別再搞混了

4. 元大、富邦、群益券商 API:申請管道與查證清單

5. 券商 API 選擇比較:程式交易券商怎麼挑最適合?

6. Python 自動下單實戰:從報價抓取到委託送出(以 Shioaji 為例)

7. 常見下單失敗情境與處理方式

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 即可:

PYTHON
# 終端機執行,不是寫在 .py 檔案裡
# pip install shioaji

安裝完成後,基本的登入流程如下(參數名稱可能隨套件版本調整,實際請以官方文件為準):

PYTHON
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 可能隨版本更新而調整參數名稱,實際使用前請對照當下安裝版本的官方文件。

PYTHON
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 交易權限,建議先從開戶這一步開始準備,並全程先在模擬環境測試過一輪,確認程式邏輯與風控機制都沒問題,再評估是否切換到正式環境:

永豐金證券開戶

Fugle 富果 開戶/體驗

最後再次提醒:本文所有程式碼與流程僅供 Python 程式教學與研究參考,不構成任何個股或券商的投資建議,實際下單前務必以各券商最新官方公告與文件為準,並自行承擔交易風險。