報價系統
分析完元富證券的報價系統 Python API 之後,我們就可以基於自己的需求,開發一個報價系統。
雖然元富證券所提供的報價系統的使用範例中沒有特別展示訂閱多檔股票的方式,但我們在原始碼中有發現這個功能,考慮到我們不是實作手機 App,沒有辦法串接 UI 畫面,可以用來顯示的只有命令列,所以我們在設計上改成將每檔訂閱的股票輸出到外部檔案,這樣才不會在命令列上看得眼花撩亂。
登入帳號
你可以直接把帳號密碼寫在類別的輸入中,也可以參考我們的寫法:使用一個 yaml 檔案來儲存帳號資訊。
參數檔案中,必須有帳號密碼和帳號號碼,這樣才能順利登入元富證券的帳號。
接著從 autotraderx
中 import QuotationSystem
類別:
from autotraderx import load_yaml
from autotraderx.masterlink import QuotationSystem
# Load account infos
cfg = load_yaml(DIR / "account.yaml")
# Login account
handler = QuotationSystem(
user=cfg["user"],
password=cfg["password"],
subscribe_list=["2330", "2454"]
)
登入的時候要一起把你想訂閱的股票代碼放進去,這個部分其實也可以一起寫在 yaml 檔案中,這樣就不用每次都改程式碼。
啟動報價系統
登入帳號之後,就可以啟動報價系統:
handler.run()
啟動後,報價系統會在執行目錄下建立檔案,包含:
- log_[當天日期]_[股票代號]_info.md:記錄股票前日收盤價、最新成交價、最新成交量等資訊。
- log_[當天日期]_[股票代號]_match.md:記錄股票每個 tick 成交資訊。
再來就沒事了,報價系統會自動更新股票資訊,你只要等待即可。
若要結束程式,可以按 Ctrl + C
來停止報價系統。
內容範例
以下展示更新的檔案內容:
商品基本資料
項目 | 數值 |
---|---|
中文名稱 | 台積電 |
交易所代碼 | TWS |
參考價 | 921.0000 |
漲停價 | 1010.0000 |
跌停價 | 829.0000 |
上一交易日成交總量 | 26262 |
上一交易日參考價 | 922.0000 |
上一交易日收盤價 | 921.0000 |
產業別 | 24 |
股票異常代碼 | 0 |
非十元面額註記 | |
異常推介個股註記 | |
可現股當沖註記 | A |
交易單位 | 1000 |
日成交資料
成交時間 | 成交價 | 漲跌 | 成交量 | 總量 |
---|---|---|---|---|
11:14:28.097382 | 944.0000 | +23.000 | 2 | 23491 |
11:14:33.153135 | 944.0000 | +23.000 | 1 | 23492 |
11:14:37.089803 | 944.0000 | +23.000 | 2 | 23494 |
11:14:38.663758 | 944.0000 | +23.000 | 4 | 23498 |
11:14:59.809925 | 945.0000 | +24.000 | 1 | 23499 |
11:15:00.081727 | 944.0000 | +23.000 | 2 | 23501 |
11:15:00.196828 | 944.0000 | +23.000 | 1 | 23502 |
11:15:00.567548 | 944.0000 | +23.000 | 1 | 23503 |
11:15:04.071329 | 944.0000 | +23.000 | 1 | 23504 |
11:15:04.598060 | 944.0000 | +23.000 | 1 | 23505 |
11:15:07.634295 | 944.0000 | +23.000 | 3 | 23508 |
11:15:10.137589 | 944.0000 | +23.000 | 2 | 23510 |
11:15:12.460697 | 944.0000 | +23.000 | 3 | 23513 |
其他功能
我們還有一些功能等待完成,例如:
- 指定輸出格式:目前我們只有輸出到 markdown 檔案,但未來可以考慮輸出到其他格式,例如 csv、json 等。
- 匯入交易事件:可以將報價系統和交易系統串接,當報價系統偵測到某個價格時,可以自動下單。
輸出格式的部分暫時還沒有其他的需求,所以可以先不管。匯入交易事件的部分比較複雜,通常這個部分會被稱為「交易策略」,這會隨著不同的標的而有所修改,對於該如何設計匯入交易事件的功能,會是我們下一個階段的開發重點。
當然還可以有其他功能,你可以給我們一些建議,我們會考慮加入到報價系統中。