永豐 Shioaji API 開通傻瓜教學(共三篇)
- 第 1 篇:簽署 API 條款
- 第 2 篇:申請 API Key、下載憑證
- 第 3 篇:安裝 Python、模擬測試、正式開通(您正在看這篇)
這篇是最後一關:在電腦裝好 Python,跑一次模擬測試(不會真的下單、不會扣錢),系統審核通過後 API 就正式開通了。
測試時間有限制
週一~週五 08:00~20:00 才能測試(18:00 以後只接受台灣 IP)。假日跑不會成功,請挑平日。
Part A:安裝 Python(只要裝一次)
安裝時,最下面的框框一定要打勾!
打開安裝檔,先勾最下面的「Add python.exe to PATH」,再按「Install Now」。
⚠️ 這個框沒勾,後面的指令都會失敗。如果忘了勾,重新執行安裝檔就可以補勾。
打開「命令提示字元」,安裝 shioaji
按鍵盤左下角的 Windows 鍵,輸入 cmd,按 Enter,會跳出一個黑色視窗。在黑色視窗裡貼上這行,按 Enter:
pip install shioaji
跑一陣子,最後看到 Successfully installed ... shioaji-... 就是裝好了。
Part B:建立測試檔
用記事本建立 test_api.py
打開「記事本」,把下面整段程式全部複製貼上,然後只改最上面那兩行:把第 2 篇抄下來的 API Key、Secret Key 貼進引號裡面。
import time
import shioaji as sj
# ====== 只要改這兩行:貼上第 2 篇抄下來的金鑰(保留前後的引號)======
API_KEY = "貼上你的API_Key"
SECRET_KEY = "貼上你的Secret_Key"
# ====================================================================
api = sj.Shioaji(simulation=True) # 模擬環境:不會真的下單、不會扣錢
accounts = api.login(api_key=API_KEY, secret_key=SECRET_KEY)
print("登入成功,您的帳戶:", accounts)
# ---- 股票下單測試(有證券戶才會跑)----
if api.stock_account:
contract = api.contracts.get("2890")
order = sj.StockOrder(
action=sj.Action.Buy,
price=contract.limit_down,
quantity=1,
price_type=sj.StockPriceType.LMT,
order_type=sj.OrderType.ROD,
order_lot=sj.StockOrderLot.Common,
order_cond=sj.StockOrderCond.Cash,
account=api.stock_account,
)
trade = api.place_order(contract, order)
print("股票測試結果:", trade.status.status)
time.sleep(3) # 股票、期貨測試要間隔 1 秒以上
# ---- 期貨下單測試(有期貨戶才會跑)----
if api.futopt_account:
contract = api.contracts.get("TXFR1")
order = sj.FuturesOrder(
action=sj.Action.Buy,
price=contract.limit_down,
quantity=1,
price_type=sj.FuturesPriceType.LMT,
order_type=sj.OrderType.ROD,
octype=sj.FuturesOCType.Auto,
account=api.futopt_account,
)
trade = api.place_order(contract, order)
print("期貨測試結果:", trade.status.status)
api.logout()
input("測試完成!按 Enter 關閉視窗")
存檔:按「檔案」→「另存新檔」→ 存到 C:\shioaji 資料夾,存檔類型選「所有檔案」,檔名打 test_api.py。
💡 檔名後面不能變成 test_api.py.txt,所以存檔類型一定要選「所有檔案」。
Part C:跑測試
在黑色視窗執行測試
回到命令提示字元(黑色視窗),一行一行輸入,每行按 Enter:
cd C:\shioaji
python test_api.py
⚠️ 不要直接雙擊 test_api.py,視窗會一閃就關掉,看不到結果。
看結果
| 畫面顯示 | 意思 | 接下來 |
|---|---|---|
PendingSubmit 或 Submitted | ✅ 測試成功 | 等審核(下一步) |
Failed | ❌ 委託失敗 | 確認是平日 08:00~20:00、第 2 篇有勾「交易」權限,再跑一次 |
| 一大段紅字錯誤 | ❌ 通常是金鑰貼錯 | 重新複製金鑰,引號裡前後不要有空白 |
有證券戶會看到「股票測試結果」,有期貨戶會看到「期貨測試結果」,兩個都要成功(只有其中一種帳戶的人看一個就好)。
Part D:確認正式開通
等大約 5 分鐘,確認審核通過
測試成功後,系統大約 5 分鐘審核(偶爾會久一點)。用下面任一種方法確認:
方法 1(最簡單):回到 證券 API 簽署中心、期貨 API 簽署中心,看測試狀態是否已通過。
方法 2:同樣用記事本建一個 check.py(一樣改金鑰兩行),在黑色視窗輸入 python check.py:
import shioaji as sj
API_KEY = "貼上你的API_Key"
SECRET_KEY = "貼上你的Secret_Key"
api = sj.Shioaji() # 這次是正式環境(只登入查詢,不下單)
accounts = api.login(api_key=API_KEY, secret_key=SECRET_KEY)
for acc in accounts:
print(acc.account_type, acc.account_id, "已開通" if acc.signed else "尚未開通")
api.logout()
input("按 Enter 關閉視窗")
每個帳戶都顯示「已開通」(也就是 signed=True)就大功告成 🎉
卡關了?常見問題對照表
| 狀況 | 原因 | 解法 |
|---|---|---|
| 「'python' 不是內部或外部命令」 | 安裝時沒勾 Add python.exe to PATH | 重新執行 Python 安裝檔補勾,再重開黑色視窗 |
| 「'pip' 不是內部或外部命令」 | 同上 | 同上,或改用 python -m pip install shioaji |
| 測試成功,但一直顯示尚未開通 | 審核還沒好,或簽署晚於測試 | 先等 30~60 分鐘;仍未開通就確認第 1 篇已簽署,再跑一次 test_api.py |
正式下單出現 406 Account Not Acceptable | 該帳戶 API 測試還沒通過(股票、期貨分開算) | 對那個帳戶重跑模擬測試 |
| 只跑出股票、沒有期貨結果 | 沒有期貨戶,或 API Key 沒勾期貨帳戶 | 確認有期貨戶,第 2 篇的帳戶有勾期貨 |
| 雙擊檔案,視窗一閃就關 | 執行方式不對 | 照步驟 5 從黑色視窗輸入指令執行 |
開通之後
正式下單時程式要改成正式環境(sj.Shioaji()),並用 api.activate_ca() 載入第 2 篇下載的憑證。範例可參考〈Python 程式交易(Shioaji API)環境建置〉這篇,以及 Shioaji 官方文件。
程式交易合規與風險聲明
1. 本系列僅介紹永豐金證券官方提供之 Shioaji API 開通與環境建置步驟,畫面與流程以永豐金證券官方最新公告及 Shioaji 官方文件為準。本人不提供、媒介或推介任何非屬本公司之第三方證券交易分析、買賣建議或全權委託軟體。
2. 所有交易策略之演算法、參數設定及程式邏輯均由交易人自行編寫、回測與決定,本公司及業務人員不對任何程式策略之獲利能力作任何保證。
3. 程式交易可能因網路中斷、硬體異常、交易所線路延遲或設定錯誤產生交易風險,交易人應備妥電話人工委託等替代管道並做好風險控管。
開通過程卡關?歡迎加 LINE(autotrade-wu)傳截圖給我,一起幫您排除。