跳转至

升版至 1.5

1.5 從 Python 專屬函式庫進化為跨語言交易平台。1.3 寫法在 1.5 大多仍可執行(會跳 DeprecationWarning),建議改寫成 1.5 慣用法。

新增什麼功能?

  • shioaji CLIHTTP API + SSElocalhost:8080),跨語言皆可呼叫
  • Dashboardlocalhost: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.subscribeapi.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.OrderStockOrder / 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 操作即可。