升版至 1.5¶
1.5 從 Python 專屬函式庫進化為跨語言交易平台。1.3 寫法在 1.5 大多仍可執行(會跳 DeprecationWarning),建議改寫成 1.5 慣用法。
新增什麼功能?¶
shioajiCLI 與 HTTP API + SSE(localhost:8080),跨語言皆可呼叫- Dashboard(
localhost:8080/dashboard)即時監控
如何遷移至 1.5?¶
1. 不需改動的部分¶
主要業務 API 的寫法都沒變,包含:登入、行情查詢、下單流程、帳務查詢、商品檔存取、callback 註冊、預設帳戶。
2. 模組改 import 路徑¶
子模組(shioaji.constant / shioaji.position / shioaji.order / ...)內的型別全部 re-export 到頂層。
from shioaji.constant import Action, StockOrderCond, FuturesOCType, Unit
from shioaji.position import StockPosition, AccountBalance
from shioaji.order import Trade, OrderStatus
from shioaji import (
Action, StockOrderCond, FuturesOCType, Unit,
StockPosition, AccountBalance,
Trade, OrderStatus,
)
3. __dict__ → .dict()¶
df = pd.DataFrame(s.__dict__ for s in positions)
df = pl.DataFrame(s.dict() for s in positions)
4. api.quote.subscribe → api.subscribe¶
api.quote.subscribe(api.Contracts.Stocks["2330"], quote_type=...)
api.quote.unsubscribe(api.Contracts.Stocks["2330"])
api.subscribe(api.Contracts.Stocks["2330"], quote_type=...)
api.unsubscribe(api.Contracts.Stocks["2330"])
5. api.Order → StockOrder / FuturesOrder¶
1.3 統一 api.Order(...) 同時支援股票與期貨、欄位易混;1.5 拆成兩個獨立類別。
order = api.Order(action="Buy", price=30, quantity=1, price_type="LMT", ...)
order = sj.StockOrder(action=sj.Action.Buy, price=30, quantity=1,
price_type=sj.StockPriceType.LMT, ...)
# 期貨改用 sj.FuturesOrder(...)
怎麼用新平台?¶
CLI 與 HTTP server 透過環境變數讀取認證與模式設定,免改 Python 程式:
# .env(放在執行目錄)
SJ_API_KEY=YOUR_API_KEY
SJ_SEC_KEY=YOUR_SECRET_KEY
SJ_PRODUCTION=false # 模擬;正式請改 true
shioaji server start
啟動後 Python/JS/Go/其他語言皆連 localhost:8080 操作即可。