shioaji
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseShioaji Trading API
Shioaji Trading API
Shioaji is SinoPac's Python API for trading Taiwan financial markets (stocks, futures, options).
Shioaji 是永豐金證券提供的 Python 交易 API,支援台灣股票、期貨、選擇權市場。
Official Docs 官方文檔: https://sinotrade.github.io/
LLM Reference: https://sinotrade.github.io/llms-full.txt
Shioaji是永丰金证券提供的Python交易API,支持台湾股票、期货、期权市场。
Official Docs 官方文档: https://sinotrade.github.io/
LLM Reference: https://sinotrade.github.io/llms-full.txt
Navigation 功能導覽
Navigation 功能导航
| Topic 主題 | File 檔案 | Description 說明 |
|---|---|---|
| Preparation 準備 | PREPARE.md | Account setup, API keys, testing 開戶/金鑰申請/測試 |
| Contracts 合約 | CONTRACTS.md | Stocks, Futures, Options contracts 股票/期貨/選擇權合約 |
| Orders 下單 | ORDERS.md | Place, modify, cancel, combo orders 下單/改單/刪單/組合單 |
| Reserve 預收 | RESERVE.md | Reserve orders for disposition stocks 處置股預收券款 |
| Streaming 行情 | STREAMING.md | Real-time tick & bidask data 即時 Tick/BidAsk 資料 |
| Market Data 市場資料 | MARKET_DATA.md | Historical, snapshot, credit, scanners 歷史資料/快照/資券/掃描器 |
| Accounting 帳務 | ACCOUNTING.md | Balance, margin, P&L, trading limits 餘額/保證金/損益/額度 |
| Advanced 進階 | ADVANCED.md | Quote binding, non-blocking, stop orders 報價綁定/非阻塞/觸價 |
| Troubleshooting 問題排解 | TROUBLESHOOTING.md | Common issues and solutions 常見問題與解決 |
| Topic 主题 | File 文件 | Description 说明 |
|---|---|---|
| Preparation 准备 | PREPARE.md | Account setup, API keys, testing 开户/密钥申请/测试 |
| Contracts 合约 | CONTRACTS.md | Stocks, Futures, Options contracts 股票/期货/期权合约 |
| Orders 下单 | ORDERS.md | Place, modify, cancel, combo orders 下单/改单/删单/组合单 |
| Reserve 预收 | RESERVE.md | Reserve orders for disposition stocks 处置股预收券款 |
| Streaming 行情 | STREAMING.md | Real-time tick & bidask data 实时Tick/BidAsk数据 |
| Market Data 市场资料 | MARKET_DATA.md | Historical, snapshot, credit, scanners 历史数据/快照/资券/扫描器 |
| Accounting 账务 | ACCOUNTING.md | Balance, margin, P&L, trading limits 余额/保证金/损益/额度 |
| Advanced 进阶 | ADVANCED.md | Quote binding, non-blocking, stop orders 报价绑定/非阻塞/触价 |
| Troubleshooting 问题排解 | TROUBLESHOOTING.md | Common issues and solutions 常见问题与解决 |
Quick Start 快速入門
Quick Start 快速入门
Installation 安裝
Installation 安装
bash
undefinedbash
undefinedpip
pip
pip install shioaji
pip install shioaji
uv (recommended 推薦)
uv (recommended 推荐)
uv add shioaji
uv add shioaji
with speed optimization 速度優化版
with speed optimization 速度优化版
uv add shioaji --extra speed
uv add shioaji --extra speed
Docker
Docker
docker run -it sinotrade/shioaji:latest
undefineddocker run -it sinotrade/shioaji:latest
undefinedLogin & Activate CA 登入與憑證啟用
Login & Activate CA 登录与凭证启用
python
import shioaji as sj
api = sj.Shioaji()python
import shioaji as sj
api = sj.Shioaji()Login with API Key 使用 API Key 登入
Login with API Key 使用API Key登录
accounts = api.login(
api_key="YOUR_API_KEY",
secret_key="YOUR_SECRET_KEY"
)
accounts = api.login(
api_key="YOUR_API_KEY",
secret_key="YOUR_SECRET_KEY"
)
Activate CA certificate 啟用憑證 (required for placing orders 下單必須)
Activate CA certificate 启用凭证 (required for placing orders 下单必须)
api.activate_ca(
ca_path="/path/to/Sinopac.pfx",
ca_passwd="YOUR_CA_PASSWORD",
)
undefinedapi.activate_ca(
ca_path="/path/to/Sinopac.pfx",
ca_passwd="YOUR_CA_PASSWORD",
)
undefinedSimulation Mode 模擬模式
Simulation Mode 模拟模式
Test API without real money. 使用模擬環境測試 API。
python
import shioaji as sj
api = sj.Shioaji(simulation=True)
api.login(api_key="YOUR_KEY", secret_key="YOUR_SECRET")Available in simulation 模擬模式可用功能:
- Quote: subscribe, unsubscribe, ticks, kbars, snapshots
- Order: place_order, update_order, cancel_order, update_status, list_trades
- Account: list_positions, list_profit_loss
- Data: short_stock_sources, credit_enquires, scanners
Test API without real money. 使用模拟环境测试API。
python
import shioaji as sj
api = sj.Shioaji(simulation=True)
api.login(api_key="YOUR_KEY", secret_key="YOUR_SECRET")Available in simulation 模拟模式可用功能:
- Quote: subscribe, unsubscribe, ticks, kbars, snapshots
- Order: place_order, update_order, cancel_order, update_status, list_trades
- Account: list_positions, list_profit_loss
- Data: short_stock_sources, credit_enquires, scanners
Simple Order Example 簡單下單範例
Simple Order Example 简单下单示例
python
undefinedpython
undefinedGet contract 取得合約
Get contract 获取合约
contract = api.Contracts.Stocks["2330"] # TSMC 台積電
contract = api.Contracts.Stocks["2330"] # TSMC 台积电
Create order 建立訂單
Create order 创建订单
order = api.Order(
price=580,
quantity=1,
action=sj.constant.Action.Buy,
price_type=sj.constant.StockPriceType.LMT,
order_type=sj.constant.OrderType.ROD,
account=api.stock_account,
)
order = api.Order(
price=580,
quantity=1,
action=sj.constant.Action.Buy,
price_type=sj.constant.StockPriceType.LMT,
order_type=sj.constant.OrderType.ROD,
account=api.stock_account,
)
Place order 下單
Place order 下单
trade = api.place_order(contract, order)
---trade = api.place_order(contract, order)
---Common Constants 常用常數
Common Constants 常用常数
Action 買賣方向
Action 买卖方向
python
sj.constant.Action.Buy # 買進
sj.constant.Action.Sell # 賣出python
sj.constant.Action.Buy # 买进
sj.constant.Action.Sell # 卖出Stock Price Type 股票價格類型
Stock Price Type 股票价格类型
python
sj.constant.StockPriceType.LMT # Limit 限價
sj.constant.StockPriceType.MKT # Market 市價
sj.constant.StockPriceType.MKP # Range Market 範圍市價python
sj.constant.StockPriceType.LMT # Limit 限价
sj.constant.StockPriceType.MKT # Market 市价
sj.constant.StockPriceType.MKP # Range Market 范围市价Futures Price Type 期貨價格類型
Futures Price Type 期货价格类型
python
sj.constant.FuturesPriceType.LMT # Limit 限價
sj.constant.FuturesPriceType.MKT # Market 市價
sj.constant.FuturesPriceType.MKP # Range Market 範圍市價python
sj.constant.FuturesPriceType.LMT # Limit 限价
sj.constant.FuturesPriceType.MKT # Market 市价
sj.constant.FuturesPriceType.MKP # Range Market 范围市价Order Type 委託條件
Order Type 委托条件
python
sj.constant.OrderType.ROD # Rest of Day 當日有效
sj.constant.OrderType.IOC # Immediate or Cancel 立即成交否則取消
sj.constant.OrderType.FOK # Fill or Kill 全部成交否則取消python
sj.constant.OrderType.ROD # Rest of Day 当日有效
sj.constant.OrderType.IOC # Immediate or Cancel 立即成交否则取消
sj.constant.OrderType.FOK # Fill or Kill 全部成交否则取消Stock Order Lot 股票交易單位
Stock Order Lot 股票交易单位
python
sj.constant.StockOrderLot.Common # Regular 整股 (1000 shares)
sj.constant.StockOrderLot.Odd # After-hours odd lot 盤後零股
sj.constant.StockOrderLot.IntradayOdd # Intraday odd lot 盤中零股
sj.constant.StockOrderLot.Fixing # Fixing 定盤python
sj.constant.StockOrderLot.Common # Regular 整股 (1000 shares)
sj.constant.StockOrderLot.Odd # After-hours odd lot 盘后零股
sj.constant.StockOrderLot.IntradayOdd # Intraday odd lot 盘中零股
sj.constant.StockOrderLot.Fixing # Fixing 定盘Order Condition 信用交易條件
Order Condition 信用交易条件
python
sj.constant.StockOrderCond.Cash # Cash 現股
sj.constant.StockOrderCond.MarginTrading # Margin 融資
sj.constant.StockOrderCond.ShortSelling # Short 融券python
sj.constant.StockOrderCond.Cash # Cash 现股
sj.constant.StockOrderCond.MarginTrading # Margin 融资
sj.constant.StockOrderCond.ShortSelling # Short 融券Quote Type 報價類型
Quote Type 报价类型
python
sj.constant.QuoteType.Tick # Tick data 逐筆成交
sj.constant.QuoteType.BidAsk # Bid/Ask data 五檔報價python
sj.constant.QuoteType.Tick # Tick data 逐笔成交
sj.constant.QuoteType.BidAsk # Bid/Ask data 五档报价Account Objects 帳戶物件
Account Objects 账户对象
python
undefinedpython
undefinedStock account 股票帳戶
Stock account 股票账户
api.stock_account
api.stock_account
Futures account 期貨帳戶
Futures account 期货账户
api.futopt_account
api.futopt_account
List all accounts 列出所有帳戶
List all accounts 列出所有账户
api.list_accounts()
---api.list_accounts()
---Rate Limits 流量限制
Rate Limits 流量限制
| Category 類別 | Limit 限制 |
|---|---|
| Daily Traffic 每日流量 | 500MB - 10GB (based on trading volume 依交易量) |
| Quote Query 行情查詢 | 50 requests / 5 sec |
| Accounting Query 帳務查詢 | 25 requests / 5 sec |
| Connections 連線數 | 5 per person ID |
| Daily Logins 每日登入 | 1000 times |
| Category 类别 | Limit 限制 |
|---|---|
| Daily Traffic 每日流量 | 500MB - 10GB (based on trading volume 依交易量) |
| Quote Query 行情查询 | 50 requests / 5 sec |
| Accounting Query 账务查询 | 25 requests / 5 sec |
| Connections 连接数 | 5 per person ID |
| Daily Logins 每日登录 | 1000 times |
Common Patterns 常用模式
Common Patterns 常用模式
Subscribe Market Data 訂閱行情
Subscribe Market Data 订阅行情
python
undefinedpython
undefinedSubscribe tick data 訂閱逐筆成交
Subscribe tick data 订阅逐笔成交
api.quote.subscribe(
api.Contracts.Stocks["2330"],
quote_type=sj.constant.QuoteType.Tick
)
api.quote.subscribe(
api.Contracts.Stocks["2330"],
quote_type=sj.constant.QuoteType.Tick
)
Subscribe bidask 訂閱五檔
Subscribe bidask 订阅五档
api.quote.subscribe(
api.Contracts.Stocks["2330"],
quote_type=sj.constant.QuoteType.BidAsk
)
api.quote.subscribe(
api.Contracts.Stocks["2330"],
quote_type=sj.constant.QuoteType.BidAsk
)
Set callback 設定回調
Set callback 设置回调
@api.quote.on_quote
def quote_callback(topic, quote):
print(f"Topic: {topic}, Quote: {quote}")
undefined@api.quote.on_quote
def quote_callback(topic, quote):
print(f"Topic: {topic}, Quote: {quote}")
undefinedQuery Positions 查詢持倉
Query Positions 查询持仓
python
undefinedpython
undefinedStock positions 股票持倉
Stock positions 股票持仓
positions = api.list_positions(api.stock_account)
positions = api.list_positions(api.stock_account)
Futures positions 期貨持倉
Futures positions 期货持仓
positions = api.list_positions(api.futopt_account)
undefinedpositions = api.list_positions(api.futopt_account)
undefinedCancel Order 刪單
Cancel Order 删单
python
api.cancel_order(trade)python
api.cancel_order(trade)Update Order 改單
Update Order 改单
python
undefinedpython
undefinedChange price 改價
Change price 改价
api.update_order(trade=trade, price=590)
api.update_order(trade=trade, price=590)
Reduce quantity 減量 (can only reduce 只能減少)
Reduce quantity 减量 (can only reduce 仅可减少)
api.update_order(trade=trade, qty=1)
---api.update_order(trade=trade, qty=1)
---Error Handling 錯誤處理
Error Handling 错误处理
python
try:
trade = api.place_order(contract, order)
except Exception as e:
print(f"Order failed: {e}")python
try:
trade = api.place_order(contract, order)
except Exception as e:
print(f"Order failed: {e}")Check order status 檢查訂單狀態
Check order status 检查订单状态
api.update_status(api.stock_account)
for trade in api.list_trades():
print(trade.status)
---api.update_status(api.stock_account)
for trade in api.list_trades():
print(trade.status)
---Logout 登出
Logout 登出
python
api.logout()python
api.logout()