shioaji について
Shioajiは、SinoPacが提供する台湾の株式・先物・オプション取引向けPython APIです。口座操作や注文管理、市場データに対応し、テスト用のシミュレーションモードも備えています。
主な機能
- 01台湾株式・先物・オプションの取引
- 02注文の発注・変更・取消
- 03リアルタイムTick・BidAskデータの購読
- 04過去データ・スナップショット・ポジションの照会
- 05シミュレーションモードでのAPI操作テスト
活用シーン
- 01注文の発注や更新の自動化
- 02台湾市場のリアルタイム相場の監視
- 03ポジションや損益の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ nicepkg/ ai-workflow --skill shioajiインストール後、Claude Code で/shioajiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
ACCOUNTING.mdADVANCED.mdCONTRACTS.mdMARKET_DATA.mdORDERS.mdPREPARE.mdRESERVE.mdSTREAMING.mdTROUBLESHOOTING.md詳細
Shioaji 取引 API
Shioaji は、台湾の金融市場(株式、先物、オプション)で取引するための SinoPac の Python API です。 Shioaji は、永豐金證券が提供する台湾の株式、先物、オプション市場向けの Python 取引 API です。
公式ドキュメント: https://sinotrade.github.io/ LLM リファレンス: https://sinotrade.github.io/llms-full.txt
ナビゲーション
| トピック | ファイル | 説明 |
|---|---|---|
| 準備 | PREPARE.md | 口座開設/API キーの申請/テスト |
| 契約 | CONTRACTS.md | 株式/先物/オプションの契約 |
| 注文 | ORDERS.md | 注文/変更/取消/組み合わせ注文 |
| 予約注文 | RESERVE.md | 処置銘柄の予約注文 |
| ストリーミング | STREAMING.md | Tick/BidAsk のリアルタイムデータ |
| 市場データ | MARKET_DATA.md | 履歴データ/スナップショット/信用取引/スキャナー |
| 口座管理 | ACCOUNTING.md | 残高/証拠金/損益/取引限度額 |
| 応用 | ADVANCED.md | レートバインディング/ノンブロッキング/逆指値 |
| トラブルシューティング | TROUBLESHOOTING.md | よくある問題と解決方法 |
クイックスタート
インストール
# pip
pip install shioaji
# uv (recommended 推薦)
uv add shioaji
# with speed optimization 速度優化版
uv add shioaji --extra speed
# Docker
docker run -it sinotrade/shioaji:latest
ログインと CA の有効化
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",
)
シミュレーションモード
実際のお金を使わずに API をテストできます。シミュレーション環境で API をテストします。
import shioaji as sj
api = sj.Shioaji(simulation=True)
api.login(api_key="YOUR_KEY", secret_key="YOUR_SECRET")
シミュレーションモードで利用できる機能:
- レート:購読、購読解除、Tick、Kバー、スナップショット
- 注文:place_order、update_order、cancel_order、update_status、list_trades
- 口座:list_positions、list_profit_loss
- データ:short_stock_sources、credit_enquires、scanners
簡単な注文の例
# 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)
よく使う定数
売買方向
sj.constant.Action.Buy # 買進
sj.constant.Action.Sell # 賣出
株価の種類
sj.constant.StockPriceType.LMT # Limit 限價
sj.constant.StockPriceType.MKT # Market 市價
sj.constant.StockPriceType.MKP # Range Market 範圍市價
先物価格の種類
sj.constant.FuturesPriceType.LMT # Limit 限價
sj.constant.FuturesPriceType.MKT # Market 市價
sj.constant.FuturesPriceType.MKP # Range Market 範圍市價
注文の種類
sj.constant.OrderType.ROD # Rest of Day 當日有效
sj.constant.OrderType.IOC # Immediate or Cancel 立即成交否則取消
sj.constant.OrderType.FOK # Fill or Kill 全部成交否則取消
株式の取引単位
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 定盤
信用取引の条件
sj.constant.StockOrderCond.Cash # Cash 現股
sj.constant.StockOrderCond.MarginTrading # Margin 融資
sj.constant.StockOrderCond.ShortSelling # Short 融券
レートの種類
sj.constant.QuoteType.Tick # Tick data 逐筆成交
sj.constant.QuoteType.BidAsk # Bid/Ask data 五檔報價
口座オブジェクト
# Stock account 股票帳戶
api.stock_account
# Futures account 期貨帳戶
api.futopt_account
# List all accounts 列出所有帳戶
api.list_accounts()
レート制限
| カテゴリ | 制限 |
|---|---|
| 1 日あたりの通信量 | 500MB - 10GB(取引量に応じて変動) |
| レート照会 | 50 リクエスト / 5 sec |
| 口座照会 | 25 リクエスト / 5 sec |
| 接続数 | 個人 ID あたり 5 |
| 1 日あたりのログイン | 1000 回 |
よく使うパターン
市場データの購読
# 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}")
保有ポジションの照会
# Stock positions 股票持倉
positions = api.list_positions(api.stock_account)
# Futures positions 期貨持倉
positions = api.list_positions(api.futopt_account)
注文の取消
api.cancel_order(trade)
注文の変更
# Change price 改價
api.update_order(trade=trade, price=590)
# Reduce quantity 減量 (can only reduce 只能減少)
api.update_order(trade=trade, qty=1)
エラー処理
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)
ログアウト
api.logout()
コメント
Markdown 対応