2025 券商 API 串接完整教學:從申請開通到 Python 自動下單實戰
前言:券商 API 串接到底在解決什麼問題?
如果你也曾經每天早上盯著盤勢手動下單、錯過關鍵進場點,那你一定能理解「券商 API 串接」這件事有多重要。所謂券商 API 串接,簡單說就是透過程式碼直接跟券商的下單系統溝通,讓你可以用 Python 或其他程式語言自動化下單、查詢庫存、抓取即時報價,不用再開著看盤軟體手動點按鈕。
我自己從 2021 年開始摸索元大證券 API,一路踩過不少雷,也串過富邦、群益、永豐金的 API,這篇文章就是把這幾年的實戰經驗整理給你,不管你是想做程式交易,還是單純想解放雙手,都能少走一些冤枉路。
券商 API 申請開通完整流程(以元大、富邦、群益為例)
先講結論:每家券商的申請流程大同小異,但審核時間跟資格門檻差異蠻大。
元大證券 API 教學重點
元大的 API(Shioaji)算是目前散戶社群討論度最高的,主要原因是文件相對完整、社群資源多。申請流程如下:
1. 開立元大證券帳戶(如果已有帳戶可跳過)
2. 到「e 財神」或分點臨櫃申請 API 使用權限
3. 簽署電子交易委託書
4. 下載 Shioaji Python 套件(pip install shioaji)
5. 申請 API Key 與 Secret Key
審核時間大約 3-5 個工作天,我當初申請時卡在「開通條件」上——元大要求帳戶內要有一定的交易紀錄或資產門檻,如果是全新開戶的小資族,建議先跟營業員溝通清楚,避免白跑一趟。
富邦新一代 API 申請流程
富邦這兩年推出的新一代 API(Fugle API)介面更現代化,支援 WebSocket 即時報價,這點對高頻策略特別友善。申請時需要:
- 富邦證券帳戶(複委託帳戶不適用)
- 線上簽署 API 服務條款
- 等待後台開通(通常 1-2 天,比元大快)
我實測過富邦的報價延遲大約在 200-300 毫秒左右,比元大略快一些,但文件完整度目前還在補強中,遇到問題比較常需要自己爬 GitHub Issue 找答案。
群益證券 API 下單範例與永豐金 API 串接教學
群益(PSC API)跟永豐金(Shioaji 也有支援永豐)的申請邏輯類似,都需要臨櫃簽約,開通後會拿到憑證檔案,這個憑證要妥善保存,遺失的話重新申請至少要等一週。
券商 API 選擇比較:程式交易券商怎麼挑最適合?
這是我最常被問到的問題:「到底該選哪家券商的 API?」老實說沒有標準答案,要看你的策略類型跟交易頻率。我整理了一張比較表給你參考:
| 項目 | 元大證券 | 富邦新一代 | 群益證券 | 永豐金 | |
|---|---|---|---|---|---|
| API 名稱 | Shioaji | Fugle API | PSC API | Shioaji | |
| 文件完整度 | ★★★★☆ | ★★★☆☆ | ★★☆☆☆ | ★★★★☆ | |
| 開通速度 | 3-5 天 | 1-2 天 | 5-7 天 | 3-5 天 | |
| 報價延遲 | 約 400ms | 約 250ms | 約 500ms | 約 400ms | |
| 社群資源 | 豐富 | 中等 | 較少 | 中等 | |
| 手續費折扣彈性 | 中 | 高 | 中 | 高 | |
| 適合策略類型 | 中低頻 | 高頻/當沖 | 中低頻 | 波段/當沖 |
從這張表可以看出,如果你做的是當沖或高頻策略,富邦的低延遲會是加分項;如果你比較在意社群支援跟文件完整度,元大跟永豐金會比較適合新手上手。
Python 自動下單實戰:從報價抓取到委託送出
這裡以元大 Shioaji 為例,示範一個最簡單的自動下單流程(僅供教學參考,實際使用請先在模擬環境測試):
import shioaji as sj
api = sj.Shioaji()
api.login(api_key="你的API_KEY", secret_key="你的SECRET_KEY")
抓取即時報價
contract = api.Contracts.Stocks["2330"]
snapshot = api.snapshots([contract])
print(snapshot)
建立委託單
order = api.Order(
price=580,
quantity=1,
action="Buy",
price_type="LMT",
order_type="ROD",
account=api.stock_account
)
trade = api.place_order(contract, order)
實際跑過這段程式碼後你會發現,真正困難的不是「怎麼下單」,而是「怎麼處理斷線重連、委託回報、部位管理」這些細節。我自己第一版程式因為沒處理好斷線重連,曾經在盤中程式當機,部位就這樣掛在那邊沒人管,嚇出一身冷汗。
如果你不想從零開始寫策略回測跟盤中監控,我自己現在會搭配 TradingView 來做技術分析跟策略視覺化,抓到訊號後再讓 API 自動送單,這樣可以省下很多重複開發圖表工具的時間。
避雷防坑指南:券商 API 串接最容易踩的 5 個地雷
這段是我覺得整篇文章最重要的部分,因為以下這些坑,我幾乎每個都親身踩過至少一次。
地雷一:憑證過期沒察覺,程式默默失效
券商 API 的憑證通常有效期是一年,很多人(包括我)第一次踩雷就是憑證過期後,程式沒有跳出明確錯誤,而是靜靜地下單失敗,等你發現的時候已經錯過好幾個交易日。防範建議:在程式裡加入憑證到期日的提醒機制,提前一個月開始每天檢查一次。
地雷二:模擬環境跟正式環境參數搞混
Shioaji 跟大部分券商 API 都有分模擬帳戶(Simulation)跟正式帳戶,我曾經因為忘記切換 simulation=True 這個參數,結果模擬測試的下單直接打到正式帳戶,還好金額不大沒造成損失。防範建議:在程式最上方用醒目的變數名稱標示目前環境,例如 IS_LIVE = False,每次上線前務必人工確認。
地雷三:忽略下單頻率限制被鎖 API
券商為了系統穩定,通常會限制每秒下單次數(例如元大限制每秒不能超過 5 次請求)。我曾經寫了一個迴圈測試策略,因為沒加 time.sleep(),短時間內狂發請求,結果 API 帳號直接被鎖了 24 小時,完全無法下單。防範建議:每次呼叫 API 之間至少加 0.5 秒延遲,並且做好 try-except 錯誤處理,避免無限迴圈瞬間打爆額度。
地雷四:委託回報處理不當,重複下單
由於 API 是非同步架構,委託回報(Order Callback)常常會延遲收到,如果你的程式邏輯是「送出委託後立刻檢查是否成交,沒成交就再送一次」,很容易造成同一個訊號重複下單好幾次。防範建議:務必用委託單的唯一識別碼(Order ID)來追蹤狀態,而不是用時間或訊號本身去判斷。
地雷五:忽略盤中系統維護時間,程式在錯誤時段運行
台股盤中偶爾會有系統維護或公告時段,這時候 API 可能會回傳異常資料,如果你的程式沒有判斷交易時段,可能會在非交易時間誤觸發下單邏輯。防範建議:在程式最外層加上交易時段判斷(例如 09:00-13:30),非交易時間直接跳過所有下單邏輯。
FAQ 常見問題
券商 API 串接需要收費嗎?
大部分券商的 API 使用本身是免費的,但通常會要求你在該券商開戶並維持一定的交易量或資產門檻,才能持續使用 API 服務。實際費用結構建議直接跟營業員確認,因為各券商政策每年都可能調整。
沒有寫程式基礎可以學會券商 API 串接嗎?
老實說有基礎會學得快很多,但如果你完全零基礎,建議先花 1-2 週學 Python 基本語法(迴圈、函式、字典),再搭配元大 Shioaji 的官方範例程式碼跟社群教學一步步練習,大概 1 個月左右可以做出簡單的自動查詢報價功能。
券商 API 串接後可以做全自動交易嗎?
技術上完全可行,但強烈建議先在模擬帳戶跑至少 1-3 個月,確認策略邏輯跟風控機制都穩定後,再小資金上線正式帳戶。我自己的經驗是,全自動交易最怕的不是策略不準,而是程式本身出現未預期的錯誤(例如網路斷線、API 回傳格式異常),這些都需要時間測試才能發現。
結論:從教學到實戰,你準備好開始了嗎?
券商 API 串接這條路,說難不難,說簡單也絕對不簡單——尤其是那些「踩過才知道」的細節地雷,往往才是決定你能不能穩定運行程式交易的關鍵。這篇文章把我這幾年從元大、富邦到群益、永豐金的實戰經驗整理給你,希望能幫你少走一些彎路。
如果你已經準備好要開始串接 API,建議先從模擬帳戶開始練習,搭配 TradingView 做好策略視覺化跟技術分析,把邏輯想清楚後再進入正式環境。程式交易不是一蹴可幾的事,穩紮穩打,才能走得長久。
有任何串接過程遇到的問題,歡迎在下方留言分享你的經驗,我們一起討論、一起少踩雷!