重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
shioaji by sinotrade/shioaji
npx skills add https://github.com/sinotrade/shioaji --skill shioajiShioaji 是永豐金證券提供的 Python 交易 API,支援台灣股票、期貨、選擇權市場。
官方文檔 : https://sinotrade.github.io/ LLM Reference : https://sinotrade.github.io/llms-full.txt
| 主題 | 檔案 | 說明 |
|---|---|---|
| 準備 | PREPARE.md | 開戶/金鑰申請/測試 |
| 合約 | CONTRACTS.md | 股票/期貨/選擇權合約 |
| 下單 | ORDERS.md | 下單/改單/刪單/組合單 |
| 預收 | RESERVE.md |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 處置股預收券款 |
| 行情 | STREAMING.md | 即時 Tick/BidAsk 資料 |
| 市場資料 | MARKET_DATA.md | 歷史資料/快照/資券/掃描器 |
| 帳務 | ACCOUNTING.md | 餘額/保證金/損益/額度 |
| 自選股 | WATCHLIST.md | 自選股清單管理 |
| 進階 | ADVANCED.md | 報價綁定/非阻塞/觸價 |
| 問題排解 | TROUBLESHOOTING.md | 常見問題與解決 |
根據使用者意圖決定載入哪個參考檔案,大部分情境只需載入 1-2 個檔案。
| 使用者意圖 | 載入檔案 |
|---|---|
| 首次設定/安裝/登入/金鑰/憑證/模擬 | references/PREPARE.md |
| 取得合約/列出股票期貨選擇權/合約屬性 | references/CONTRACTS.md |
| 下單/改單/刪單/組合單/委託回報 | references/ORDERS.md |
| 處置股/注意股預收券款 | references/RESERVE.md |
| 訂閱即時行情/Tick/五檔回調/事件處理 | references/STREAMING.md |
| 歷史Tick/K線/快照/資券/券源/掃描器 | references/MARKET_DATA.md |
| 帳務餘額/保證金/持倉/損益/交割/額度 | references/ACCOUNTING.md |
| 自選股清單管理/同步合約 | references/WATCHLIST.md |
| 非阻塞模式/報價綁定/觸價委託 | references/ADVANCED.md |
| 錯誤/連線問題/速率限制/環境設定 | references/TROUBLESHOOTING.md |
# pip
pip install shioaji
# uv (推薦)
uv add shioaji
# with speed optimization
uv add shioaji --extra speed
# Docker
docker run -it sinotrade/shioaji:latest
import shioaji as sj
api = sj.Shioaji()
# 使用 API Key 登入
accounts = api.login(
api_key="YOUR_API_KEY",
secret_key="YOUR_SECRET_KEY"
)
# 啟用憑證 (下單必須)
api.activate_ca(
ca_path="/path/to/Sinopac.pfx",
ca_passwd="YOUR_CA_PASSWORD",
)
使用模擬環境測試 API。
import shioaji as sj
api = sj.Shioaji(simulation=True)
api.login(api_key="YOUR_KEY", secret_key="YOUR_SECRET")
模擬模式可用功能:
# 取得合約
contract = api.Contracts.Stocks["2330"] # 台積電
# 建立訂單
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,
)
# 下單
trade = api.place_order(contract, order)
sj.constant.Action.Buy # 買進
sj.constant.Action.Sell # 賣出
sj.constant.StockPriceType.LMT # 限價
sj.constant.StockPriceType.MKT # 市價
sj.constant.StockPriceType.MKP # 範圍市價
sj.constant.FuturesPriceType.LMT # 限價
sj.constant.FuturesPriceType.MKT # 市價
sj.constant.FuturesPriceType.MKP # 範圍市價
sj.constant.OrderType.ROD # 當日有效
sj.constant.OrderType.IOC # 立即成交否則取消
sj.constant.OrderType.FOK # 全部成交否則取消
sj.constant.StockOrderLot.Common # 整股 (1000 shares)
sj.constant.StockOrderLot.Odd # 盤後零股
sj.constant.StockOrderLot.IntradayOdd # 盤中零股
sj.constant.StockOrderLot.Fixing # 定盤
sj.constant.StockOrderCond.Cash # 現股
sj.constant.StockOrderCond.MarginTrading # 融資
sj.constant.StockOrderCond.ShortSelling # 融券
sj.constant.QuoteType.Tick # 逐筆成交
sj.constant.QuoteType.BidAsk # 五檔報價
# 股票帳戶
api.stock_account
# 期貨帳戶
api.futopt_account
# 列出所有帳戶
api.list_accounts()
| 類別 | 限制 |
|---|---|
| 每日流量 | 500MB - 10GB (依交易量) |
| 行情查詢 | 50 requests / 5 sec |
| 帳務查詢 | 25 requests / 5 sec |
| 連線數 | 5 per person ID |
| 每日登入 | 1000 times |
# 訂閱逐筆成交
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.BidAsk
)
# 設定回調
@api.quote.on_quote
def quote_callback(topic, quote):
print(f"Topic: {topic}, Quote: {quote}")
# 股票持倉
positions = api.list_positions(api.stock_account)
# 期貨持倉
positions = api.list_positions(api.futopt_account)
api.cancel_order(trade)
# 改價
api.update_order(trade=trade, price=590)
# 減量 (只能減少)
api.update_order(trade=trade, qty=1)
try:
trade = api.place_order(contract, order)
except Exception as e:
print(f"Order failed: {e}")
# 檢查訂單狀態
api.update_status(api.stock_account)
for trade in api.list_trades():
print(trade.status)
api.logout()
Weekly Installs
48
Repository
GitHub Stars
350
First Seen
Jan 22, 2026
Security Audits
Installed on
gemini-cli40
codex40
opencode39
github-copilot36
cursor33
amp31
飞书视频会议CLI工具:lark-vc技能详解,高效搜索与管理会议记录与纪要
47,500 周安装