Shiaoji SinoPac 永豐金證券 Python API
pip install -r requirements.txt
cp .env.template .env
api = sj.Shioaji(simulation=True) # 模擬模式登入
accounts = api.login(
api_key=os.getenv('API_KEY'),
secret_key=os.getenv('SECRET_KEY')
)
accounts
等正式開通後,會出現signed=True
Response Code: 0 | Event Code: 0 | Info: host '203.66.91.161:80', hostname '203.66.91.161:80'
IP 203.66.91.161:80 (host 1 of 1) (host connection attempt 1 of 1) (total connection attempt 1 of 1) |
Event: Session up[FutureAccount(person_id='F123456789', broker_id='F002000', account_id='1234567', signed=True, username='莊OO'),
StockAccount(person_id='F123456789', broker_id='9A95', account_id='1234568', signed=True, username='莊OO')]
要正式下單時記得CA憑證(通過模擬測試後從網頁下載的)路徑要用斜線(/)
CA_PATH="C:/ekey/1234/Sinopac.pfx"
登入及查詢帳號餘額
api = sj.Shioaji(simulation=False)
accounts = api.login(
api_key=os.getenv('API_KEY'),
secret_key=os.getenv('SECRET_KEY')
)
tmp=api.account_balance()
print(tmp)
查詢0050報價
api = sj.Shioaji(simulation=False)
accounts = api.login(
api_key=os.getenv('API_KEY'),
secret_key=os.getenv('SECRET_KEY')
)
tmp = api.quote.subscribe(
api.Contracts.Stocks["0050"],
quote_type = sj.constant.QuoteType.Tick,
version = sj.constant.QuoteVersion.v1
)
print(tmp)
下單平盤價單買00878
api = sj.Shioaji(simulation=False) # 正式模式
accounts = api.login(
api_key=os.getenv('API_KEY'),
secret_key=os.getenv('SECRET_KEY')
)
accounts
## Activate CA
result = api.activate_ca(
ca_path=os.getenv('CA_CA_CERT_PATH'),
ca_passwd=os.getenv('CA_PASSWD')
)
print(result)
# 商品檔 - 請修改此處
# 準備下單的 Contract
# 使用 00878 國泰永續高股息
contract = api.Contracts.Stocks["00878"]
print(f"Contract: {contract}")
# 建立委託下單的 Order
order = sj.order.StockOrder(
action=Action.Buy, # 買進
price=contract.reference, # 以平盤價買進
quantity=1, # 下單數量
price_type=StockPriceType.LMT, # 限價單
order_type=OrderType.ROD, # 當日有效單
account=api.stock_account, # 使用預設的帳戶
)
print(f"Order: {order}")
# 送出委託單
trade = api.place_order(contract=contract, order=order)
print(f"Trade: {trade}")
# 更新狀態
api.update_status()
print(f"Status: {trade.status}")
Reference
https://github.com/Sinotrade/Shioaji
Tutorial for Shioaji