在登入成功後,今天我們示範下單前,如何確認要使用哪個帳號交易。
*註1: Shioaji的各項功能(訂閱報價/下單..等),範圍涵蓋了證券與期貨商品,下單會有證券戶與期貨戶的差別。而有些投資人在永豐金證券或期貨,也有可能有多個帳號,因此下單之前就有必要對交易帳號進行設定。
*註2: 無法登入的朋友,如果您已經在永豐金證券開戶完成,但還未簽署Python API使用申請,務必要先完成文件簽署才能使用Shioaji各項功能。請參考這裡
查看交易帳號的方式,第一種是登入就能看,範例:
#登入時,一併顯示帳號訊息
import shioaji as sj
api = sj.Shioaji()
api.login(
person_id="填入個人帳號(通常是身分證)",
passwd="個人密碼",
contracts_cb=lambda security_type: print(f"{repr(security_type)} fetch done.")
)
執行後,正常的話會看到下列回覆訊息。黃色框起來的部分,就可以看到個人帳戶資料,StockAccount代表證券帳戶、FutureAccount代表期貨帳戶。
另一種是用下列指令查看帳戶資料,就可以取得跟上圖黃色部分一樣的訊息。
accounts = api.list_accounts()
accounts
接下來查看預設的帳號,一樣是有分為證券與期貨兩種,指令如下:
# Stock default account 證券目前的預設帳戶
print(api.stock_account)
# Futures default account 期貨目前的預設帳戶
print(api.futopt_account)
接下來是設定下單的時候要用哪一個帳號,第一種方式是在order當中放入指定account資訊。請參考下列程式碼的註解。關於下單order的其他內容,我們之後再細談。
# stock order 證券商品下單指令
order = api.Order(
price=12,
quantity=1,
action=sj.constant.Action.Buy,
price_type=sj.constant.StockPriceType.LMT,
order_type=sj.constant.TFTOrderType.ROD,
order_lot=sj.constant.TFTStockOrderLot.Common,
account=api.stock_account #這一行指定帳戶
)
# futures order 期貨商品下單指令
order = api.Order(
action=sj.constant.Action.Buy,
price=10200,
quantity=2,
price_type=sj.constant.StockPriceType.LMT,
order_type=sj.constant.FuturesOrderType.ROD,
octype=sj.constant.FuturesOCType.Auto,
account=api.futopt_account #這一行指定帳戶
)
另一個方式是直接設定預設的帳戶,程式碼如下
# stock default account 設定證券帳戶
api.set_default_account(accounts[-1])
print(api.stock_account)
# futures default account 設定期貨帳戶
api.set_default_account(accounts[1])
print(api.futopt_account)
上述程式碼的accounts型態是list。中括號內填入的是list內容的順序位置,從0開始起算代表第1個,1代表第2個。範例中的-1代表是最後第一個,如果是-2就是倒數第二個。對list使用不了解的朋友可以再查詢一下Python語言的list用法。
以上就是今天的分享,如果有問題歡迎留言討論,如果有不正確的地方也請多指教,謝謝。