iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
永豐金融APIs

永豐金API之30天不中斷Q&A系列 第 4

Day4 - 如何設定預設交易帳號

在登入成功後,今天我們示範下單前,如何確認要使用哪個帳號交易。

*註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用法。

以上就是今天的分享,如果有問題歡迎留言討論,如果有不正確的地方也請多指教,謝謝。


上一篇
Day3 - 登入登出相關問題
下一篇
Day5 - 關於訂閱報價、訂閱數上限及計算方式
系列文
永豐金API之30天不中斷Q&A26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言