在教學文章中,說的很簡潔,可以快速上手,但有些細節就是要逐步進去看才知道。因此本篇會著重在登入的部份,看看有什麼可以玩的。
在一切一切的開始都是要登入,而這邊會使用Login篇章。
首先使用官方的登入程式碼:
# 載入shioaji套件
import shioaji as sj
# Initialization
api = sj.Shioaji()
# Login: (ID, password)
accounts = api.login("自己的身分證", "自己的密碼")
會顯示這樣的資料:
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
這樣就簡單的登入自己的帳號。
如果在login
功能中,輸入contracts_cb
參數,就會顯示自己的帳號狀態,如證券文件是否簽署過等等。
這邊使用虛擬環境:
api = sj.Shioaji(simulation=True)
accounts = api.login(
person_id="PAPIUSER01",
passwd="2222",
contracts_cb=lambda security_type: print(f"{repr(security_type)} fetch done."),
)
會顯示這樣的結果:
<SecurityType.Index: 'IND'> fetch done.
<SecurityType.Stock: 'STK'> fetch done.
<SecurityType.Future: 'FUT'> fetch done.
<SecurityType.Option: 'OPT'> fetch done.
不過這個顯示需要等待,可以設定中斷點讓他資料跑出來
如果看accounts的資料,就可以看到自己的一些帳戶資料,裡面有股票與期貨帳號兩類,並且包含:account_id、broker_id、person_id、signed、username等等資訊可以進去裡面挖。
可以看到我這邊有開戶證券,但是期貨的帳戶signed:False
。
為什麼會需要帳戶資訊呢?因為一個人可以在同一個券商開多個戶頭,因此可以選擇這時候下單的帳號是哪個,由哪個帳號管理庫存。而這個多帳號的情況,有時也會發生於比較有資本的客戶身上,因為他們避免被別人發現它們購買哪些公司,他們屆會分散股票到各個分公司中,讓別人不要操作我自己的股票。因此這些都是需要多個帳號才能解決問題。