chundev
日期:2026-03-16 目的:整理台灣券商 API 程式交易現況,以及永豐 Shioaji 的申請到下單完整流程
台灣有 4 家主要券商提供期貨 API 程式交易,永豐 Shioaji 是市佔最大(~50%)、生態最成熟的選擇。一般散戶即可申請,全程線上,無資金門檻。支援 CDF(台積電期貨)自動下單。
| 券商 | API 名稱 | 語言 | 期貨支援 | 文件品質 | 申請方式 | 備註 |
|---|---|---|---|---|---|---|
| 永豐金 | Shioaji | Python | ✅ CDF、TX 等 | ⭐⭐⭐ 完整 | 線上 | 市佔 ~50%,最推薦 |
| 富邦 | Fubon Neo API | Python/C#/JS | ✅ | ⭐⭐⭐ 完整 | 線上 | 多語言,有 Discord 社群 |
| 元大 | 元大 API | DLL 元件 | ✅(需另開權限) | ⭐ 基本 | 需臨櫃,5-10 天 | 不提供開發教學 |
| 元富 | MasterLink API | Python/C# | ✅ | ⭐⭐ | 線上 | |
| 群益期貨 | 群益 API | Python | ✅ | ⭐⭐ | 線上 | 期貨專門 |
| 統一期貨 | 統一 API | Python | ✅ | ⭐⭐ | 線上 | |
| 富果(玉山) | Fugle API | Python/JS | ❌ 不支援期貨 | ⭐⭐⭐ | 線上 | 股票為主 |
結論:做期貨程式交易,永豐 Shioaji 是首選。
⚠️ Secret Key 只會顯示一次,申請完立刻複製保存!
.pfx 憑證檔案~/.shioaji/)# 安裝 Shioaji
pip install shioaji
# 建立 .env 檔案
cat > .env << 'EOF'
API_KEY=你的_API_Key
SECRET_KEY=你的_Secret_Key
CA_CERT_PATH=/path/to/Sinopac.pfx
CA_PASSWORD=你的憑證密碼
EOF
import os
from dotenv import load_dotenv
import shioaji as sj
load_dotenv()
api = sj.Shioaji(simulation=True) # 先用模擬模式測試
api.login(
api_key=os.environ["API_KEY"],
secret_key=os.environ["SECRET_KEY"],
fetch_contract=True,
contracts_timeout=10000,
)
# 啟用電子憑證(下單必備)
api.activate_ca(
ca_path=os.environ["CA_CERT_PATH"],
ca_passwd=os.environ["CA_PASSWORD"],
)
print("✅ 登入成功")
# 查看所有 CDF 合約
print(api.Contracts.Futures.CDF)
# 取得近月合約
contract = api.Contracts.Futures.CDF.CDFR1 # R1 = 近月
print(f"合約: {contract}")
order = api.Order(
action=sj.constant.Action.Buy, # 買進
price=1950, # 限價
quantity=1, # 1 口
price_type=sj.constant.FuturesPriceType.LMT, # 限價單
order_type=sj.constant.OrderType.ROD, # 當日有效
octype=sj.constant.FuturesOCType.Auto, # 自動新倉/平倉
account=api.futopt_account,
)
trade = api.place_order(contract, order)
print(f"下單結果: {trade}")
order = api.Order(
action=sj.constant.Action.Sell, # 賣出
price=2000, # 限價
quantity=1, # 1 口
price_type=sj.constant.FuturesPriceType.LMT,
order_type=sj.constant.OrderType.ROD,
octype=sj.constant.FuturesOCType.Auto,
account=api.futopt_account,
)
trade = api.place_order(contract, order)
| 類型 | 代碼 | 說明 |
|---|---|---|
| 限價單 | LMT |
指定價格成交 |
| 市價單 | MKT |
以市場價格立即成交 |
| 範圍市價 | MKP |
市價 + 範圍限制 |
| 類型 | 代碼 | 說明 |
|---|---|---|
| ROD | ROD |
當日有效,直到收盤或成交 |
| IOC | IOC |
立即成交否則取消(可部分成交) |
| FOK | FOK |
全部成交否則全部取消 |
| 項目 | 限制 |
|---|---|
| 同一帳號最大連線數 | 5 條 |
| 每日登入上限 | 1,000 次 |
| 下單請求(10 秒內) | 250 次 |
| 資料查詢(5 秒內) | 50 次 |
| 行情訂閱數量 | 200 個 |
| 每日流量(交易量 0) | 500 MB |
| 每日流量(有交易) | 2-10 GB |
⚠️ 超過流量限制時,行情查詢會返回空值。多次超限會被暫停使用。
目前 TSM 策略系統在每日 15:30 日盤收盤後透過 tRPC 計算進出場訊號,並發送 Telegram 通知。未來可以整合 Shioaji 實現自動下單:
15:30 日盤收盤
↓
PM2 Worker 執行 update:today
↓
計算今日訊號(進場/出場/觀望)
↓
如果有訊號 → Shioaji API 下單
↓
同時發送 Telegram 通知
注意事項:
simulation=True)驗證一個月