"Bid"是"委買","Ask"是"委賣",所以"BidAsk"就是委買委賣的資料,而這裡的委買委賣所呈現出來的內容就是五檔報價(最佳五檔),那來稍微解釋一下什麼是五檔報價?""五檔報價"就是離目前市場成交價最接近的上下五個價位,而這五個價位是由之前我有在Day13所講過的tick也就是檔位去做劃分。從這五檔價位裡我們可以看出買賣的成交量各有多少,由此去決定要用什麼價格去做買進跟賣出,只要你符合這些人的出價,你就能立即買到股票。
首先一樣要先宣告quote_callback來處理所回傳的資料
程式碼如下
@api.quote.on_quote
def quote_callback(topic: str, quote: dict):
print(f"Topic: {topic}, Quote: {quote}")
以"永豐金"為例,代碼為「2890」
我們來試著Subscribe它的BidAsk五檔報價資料
程式碼如下
api.quote.subscribe(api.Contracts.Stocks["2890"], quote_type='bidask')
由於沒有執行程式時,VS Code不會主動顯示輸出
所以我們要再設個時間,讓程式持續執行一段時間去抓取資料
程式碼如下
import time #引入時間
time.sleep(10) #持續執行10秒
執行結果如下
Topic: QUT/idcdmzpcr01/TSE/2890, Quote: {'AskPrice': [13.7, 13.75, 13.8, 13.85, 13.9], 'AskVolume': [1165, 521, 708, 467, 721], 'BidPrice': [13.65, 13.6, 13.55, 13.5, 13.45], 'BidVolume': [1476, 3254, 411, 642, 92], 'Date': '2021/10/12', 'Time': '09:17:06.686408'}
如果想取消訂閱的話,則是要用"Unsubscribe"
程式碼如下
api.quote.unsubscribe(api.Contracts.Stocks["2890"], quote_type='bidask')