快速入門
只需像使用其他流行的套件一樣,匯入後新建實例即可開始使用 Shioaji。
登入並啟用憑證¶
import shioaji as sj
# 建立 Shioaji 實例。
api = sj.Shioaji()
# 登入
accounts = api.login(api_key="YOUR_API_KEY", secret_key="YOUR_SECRET_KEY")
# 啟用憑證(正式環境下單前必須)
api.activate_ca(
ca_path="your/ca/path/Sinopac.pfx",
ca_passwd="YOUR_CA_PASSWORD",
person_id="Person of this Ca",
)
# .env(放在執行目錄)應包含:
# SJ_API_KEY=YOUR_API_KEY
# SJ_SEC_KEY=YOUR_SECRET_KEY
# SJ_CA_PATH=your/ca/path/Sinopac.pfx
# SJ_CA_PASSWD=YOUR_CA_PASSWORD
# 啟動 server(自動讀取 .env,完成登入與憑證載入)
shioaji server start
# 確認狀態
shioaji server check
# .env(放在執行目錄)應包含:
# SJ_API_KEY=YOUR_API_KEY
# SJ_SEC_KEY=YOUR_SECRET_KEY
# SJ_CA_PATH=your/ca/path/Sinopac.pfx
# SJ_CA_PASSWD=YOUR_CA_PASSWORD
# 啟動 server
shioaji server start
# 確認帳戶(驗證已登入)
curl http://localhost:8080/api/v1/auth/accounts
api.subscribe(api.Contracts.Stocks["2330"], quote_type="tick")
api.subscribe(api.Contracts.Stocks["2330"], quote_type="bid_ask")
shioaji data stream --code 2330 --quote-type tick
shioaji data stream --code 2330 --quote-type bid_ask
# 訂閱
curl -X POST http://localhost:8080/api/v1/stream/subscribe \
-H "Content-Type: application/json" \
-d '{"security_type":"STK","exchange":"TSE","code":"2330","quote_type":"Tick"}'
curl -X POST http://localhost:8080/api/v1/stream/subscribe \
-H "Content-Type: application/json" \
-d '{"security_type":"STK","exchange":"TSE","code":"2330","quote_type":"BidAsk"}'
# 連接 SSE 接收串流(Ctrl+C 停止)
curl -N http://localhost:8080/api/v1/stream/data
contract = api.Contracts.Stocks["2890"]
order = sj.StockOrder(
action=sj.Action.Buy,
price=28,
quantity=1,
price_type=sj.StockPriceType.LMT,
order_type=sj.OrderType.ROD,
order_lot=sj.StockOrderLot.Common,
order_cond=sj.StockOrderCond.Cash,
)
trade = api.place_order(contract, order)
shioaji order place --code 2890 --action buy --price 28 --quantity 1 \
--price-type lmt --order-type rod --order-lot common --order-cond cash
curl -X POST http://localhost:8080/api/v1/order/place_order \
-H "Content-Type: application/json" \
-d '{
"contract": {"security_type": "STK", "exchange": "TSE", "code": "2890"},
"stock_order": {
"price": 28,
"quantity": 1,
"action": "Buy",
"price_type": "LMT",
"order_type": "ROD",
"order_lot": "Common",
"order_cond": "Cash"
}
}'
總結¶
這份快速入門展示了 Shioaji 的核心操作。無論是 Python、CLI 或 HTTP API(含 JS、Go、C++、C# 等),皆能以相同邏輯完成登入、訂閱與下單。