Why Use This This skill provides specialized capabilities for Sinotrade's codebase.
Use Cases Developing new features in the Sinotrade repository Refactoring existing code to follow Sinotrade standards Understanding and working with Sinotrade's codebase structure
Install Guide 2 steps 1 2 Install inside Ananke
Click Install Skill, paste the link below, then press Install.
https://github.com/Sinotrade/Shioaji/tree/master/skills/shioaji Skill Snapshot Auto scan of skill assets. Informational only.
Valid SKILL.md Checks against SKILL.md specification
Source & Community
Updated At Jan 8, 2026, 02:10 AM
Skill Stats
SKILL.md 263 Lines
Total Files 1
Total Size 0 B
License NOASSERTION
---
name: shioaji
description: |
Shioaji Taiwan financial trading API guide. Use when trading stocks/futures/options on Taiwan markets, subscribing to real-time market data, querying account info, or building automated trading systems.
Shioaji 台灣金融交易 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
---
## Navigation 功能導覽
| Topic 主題 | File 檔案 | Description 說明 |
|------------|-----------|------------------|
| Preparation 準備 | [PREPARE.md](PREPARE.md) | Account setup, API keys, testing 開戶/金鑰申請/測試 |
| Contracts 合約 | [CONTRACTS.md](CONTRACTS.md) | Stocks, Futures, Options contracts 股票/期貨/選擇權合約 |
| Orders 下單 | [ORDERS.md](ORDERS.md) | Place, modify, cancel, combo orders 下單/改單/刪單/組合單 |
| Reserve 預收 | [RESERVE.md](RESERVE.md) | Reserve orders for disposition stocks 處置股預收券款 |
| Streaming 行情 | [STREAMING.md](STREAMING.md) | Real-time tick & bidask data 即時 Tick/BidAsk 資料 |
| Market Data 市場資料 | [MARKET_DATA.md](MARKET_DATA.md) | Historical, snapshot, credit, scanners 歷史資料/快照/資券/掃描器 |
| Accounting 帳務 | [ACCOUNTING.md](ACCOUNTING.md) | Balance, margin, P&L, trading limits 餘額/保證金/損益/額度 |
| Watchlist 自選股 | [WATCHLIST.md](WATCHLIST.md) | Custom stock lists management 自選股清單管理 |
| Advanced 進階 | [ADVANCED.md](ADVANCED.md) | Quote binding, non-blocking, stop orders 報價綁定/非阻塞/觸價 |
| Troubleshooting 問題排解 | [TROUBLESHOOTING.md](TROUBLESHOOTING.md) | Common issues and solutions 常見問題與解決 |
---
## Quick Start 快速入門
### Installation 安裝
```bash
# pip
pip install shioaji
# uv (recommended 推薦)
uv add shioaji
# with speed optimization 速度優化版
uv add shioaji --extra speed
# Docker
docker run -it sinotrade/shioaji:latest
```
### Login & Activate CA 登入與憑證啟用
```python
import shioaji as sj
api = sj.Shioaji()
# Login with API Key 使用 API Key 登入
accounts = api.login(
api_key="YOUR_API_KEY",
secret_key="YOUR_SECRET_KEY"
)
# Activate CA certificate 啟用憑證 (required for placing orders 下單必須)
api.activate_ca(
ca_path="/path/to/Sinopac.pfx",
ca_passwd="YOUR_CA_PASSWORD",
)
```
### 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
### Simple Order Example 簡單下單範例
```python
# Get contract 取得合約
contract = api.Contracts.Stocks["2330"] # TSMC 台積電
# 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,
)
# Place order 下單
trade = api.place_order(contract, order)
```
---
## Common Constants 常用常數
### Action 買賣方向
```python
sj.constant.Action.Buy # 買進
sj.constant.Action.Sell # 賣出
```
### Stock Price Type 股票價格類型
```python
sj.constant.StockPriceType.LMT # Limit 限價
sj.constant.StockPriceType.MKT # Market 市價
sj.constant.StockPriceType.MKP # Range Market 範圍市價
```
### Futures Price Type 期貨價格類型
```python
sj.constant.FuturesPriceType.LMT # Limit 限價
sj.constant.FuturesPriceType.MKT # Market 市價
sj.constant.FuturesPriceType.MKP # Range Market 範圍市價
```
### Order Type 委託條件
```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 股票交易單位
```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 信用交易條件
```python
sj.constant.StockOrderCond.Cash # Cash 現股
sj.constant.StockOrderCond.MarginTrading # Margin 融資
sj.constant.StockOrderCond.ShortSelling # Short 融券
```
### Quote Type 報價類型
```python
sj.constant.QuoteType.Tick # Tick data 逐筆成交
sj.constant.QuoteType.BidAsk # Bid/Ask data 五檔報價
```
---
## Account Objects 帳戶物件
```python
# Stock account 股票帳戶
api.stock_account
# Futures account 期貨帳戶
api.futopt_account
# List all accounts 列出所有帳戶
api.list_accounts()
```
---
## 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 |
---
## Common Patterns 常用模式
### Subscribe Market Data 訂閱行情
```python
# Subscribe tick data 訂閱逐筆成交
api.quote.subscribe(
api.Contracts.Stocks["2330"],
quote_type=sj.constant.QuoteType.Tick
)
# Subscribe bidask 訂閱五檔
api.quote.subscribe(
api.Contracts.Stocks["2330"],
quote_type=sj.constant.QuoteType.BidAsk
)
# Set callback 設定回調
@api.quote.on_quote
def quote_callback(topic, quote):
print(f"Topic: {topic}, Quote: {quote}")
```
### Query Positions 查詢持倉
```python
# Stock positions 股票持倉
positions = api.list_positions(api.stock_account)
# Futures positions 期貨持倉
positions = api.list_positions(api.futopt_account)
```
### Cancel Order 刪單
```python
api.cancel_order(trade)
```
### Update Order 改單
```python
# Change price 改價
api.update_order(trade=trade, price=590)
# Reduce quantity 減量 (can only reduce 只能減少)
api.update_order(trade=trade, qty=1)
```
---
## Error Handling 錯誤處理
```python
try:
trade = api.place_order(contract, order)
except Exception as e:
print(f"Order failed: {e}")
# Check order status 檢查訂單狀態
api.update_status(api.stock_account)
for trade in api.list_trades():
print(trade.status)
```
---
## Logout 登出
```python
api.logout()
```