Quote.set_cb_event 設定event

此功能允許用戶為訂閲事件設定一個回調函數。這樣每當訂閱的事件更新時,設定的自定義回調函數將被調用,即時處理行情事件。

Example:

input
#設定事件處理
def event_sample(event: kgi.Event):

    if event.event_code == kgi.Event.event_code.CONNECTED:
        display('【系統事件】:WebSocket 連線成功!')
    elif event.event_code == kgi.Event.event_code.CONNECTING:
        display('【系統事件】:正嘗試建立連線...')
    elif event.event_code == kgi.Event.event_code.MANUAL_DISCONNECT:
        display('【系統事件】:使用者手動中斷連線。')
    elif event.event_code == kgi.Event.event_code.DISCONNECTED:
        display('【系統事件】:連線已斷開。')
    elif event.event_code == kgi.Event.event_code.RECONNECTING:
        display('【系統事件】:連線異常,正在嘗試自動重連...')
    elif event.event_code == kgi.Event.event_code.RECONNECTED:
        display('【系統事件】:自動重連成功!')
    elif event.event_code == kgi.Event.event_code.RECONNECT_FAILED:
        display('【系統事件】:重連嘗試失敗。')
    elif event.event_code == kgi.Event.event_code.RECONNECT_MAX_REACHED:
        display('【警告事件】:已達最大重連次數上限,停止重連。')
    elif event.event_code == kgi.Event.event_code.HEARTBEAT_TIMEOUT:
        display('【警告事件】:心跳包逾時,即將觸發斷線重連。')
    elif event.event_code == kgi.Event.event_code.WS_TIMEOUT:
        display('【警告事件】:WebSocket 回應逾時。')
    elif event.event_code == kgi.Event.event_code.WS_ERROR:
        display('【錯誤事件】:WebSocket 底層遭遇錯誤。')
    elif event.event_code == kgi.Event.event_code.SUBSCRIBE_REQUEST:
        display('【訂閱事件】:發送訂閱請求中...')
    elif event.event_code == kgi.Event.event_code.SUBSCRIBE_OK:
        display('【訂閱事件】:商品訂閱成功。')
    elif event.event_code == kgi.Event.event_code.SUBSCRIBE_OK_KBAR:
        display('【訂閱事件】:KBar 訂閱成功。')
    elif event.event_code == kgi.Event.event_code.SUBSCRIBE_FAIL:
        display('【錯誤事件】:商品訂閱失敗!')
    elif event.event_code == kgi.Event.event_code.UNSUBSCRIBE_REQUEST:
        display('【訂閱事件】:發送取消訂閱請求...')
    elif event.event_code == kgi.Event.event_code.UNSUBSCRIBE_OK:
        display('【訂閱事件】:取消商品訂閱成功。')
    elif event.event_code == kgi.Event.event_code.UNSUBSCRIBE_FAIL:
        display('【錯誤事件】:取消訂閱失敗!')
    elif event.event_code == kgi.Event.event_code.BACKPRESSURE:
        display('【警告事件】:背壓警報!下游處理數據速度過慢。')
    elif event.event_code == kgi.Event.event_code.CALLBACK_SLOW:
        display('【警告事件】:您的 Callback 運算耗時過長,可能造成行情延遲。')
    elif event.event_code == kgi.Event.event_code.DROPPED_MESSAGE:
        display('【系統事件】:緩衝區溢位,過期行情訊息已丟棄。')
    elif event.event_code == kgi.Event.event_code.CALLBACK_EXCEPTION:
        display('【錯誤事件】:Callback 執行發生例外!')

    if event.respond_code == kgi.Event.respond_code.SUCCESSFUL_OPERATION:
        pass
    elif event.respond_code == kgi.Event.respond_code.QUOTE_SERVER_UNKNOWN_ERROR:
        display('【伺服器錯誤】:主機發生未知錯誤。')
    elif event.respond_code == kgi.Event.respond_code.QUOTE_SERVER_TOO_MANY_CONNECTIONS:
        display('【伺服器拒絕】:超出伺服器最大並行連線數上限。')
    elif event.respond_code == kgi.Event.respond_code.QUOTE_SERVER_INVALID_TOKEN:
        display('【認證錯誤】:憑證(Token)無效或已過期。')
    elif event.respond_code == kgi.Event.respond_code.QUOTE_SERVER_NO_PERMISSION_SUBSCRIPTION:
        display('【權限錯誤】:伺服器判定您無權訂閱該商品。')
    elif event.respond_code == kgi.Event.respond_code.QUOTE_SERVER_INVALID_SYMBOL_SUBSCRIPTION:
        display('【訂閱警告】:無效的商品代碼,請檢查股票代號是否正確。')
    elif event.respond_code == kgi.Event.respond_code.QUOTE_WS_SUBSCRIPTION_LIMIT_EXCEEDED:
        display('【本地限制】:WebSocket 訂閱主題已達本地上限。')
    elif event.respond_code == kgi.Event.respond_code.QUOTE_STATICDATA_KBAR_DUPLICATE_SUBSCRIPTION:
        display('【訂閱重複】:此 KBar 週期訂閱已存在,不重複處理。')

api.Quote.set_cb_event(event_sample)


#訂閱tick行情
api.Quote.subscribe_tick('2330' ,odd_lot=False)
output
'【系統事件】:WebSocket 連線成功!'
'【訂閱事件】:商品訂閱成功。'
Tick_Stock_v1(exchange='TWSE', 
	symbol='2330', 
	delay_time=0.007, 
	odd_lot=False, 
	datetime='20260622104342', 
	open=2455.0, 
	high=2510.0, 
	low=2455.0, 
	close=2510.0, 
	volume=1, 
	total_volume=22823.0, 
	chg_type=2, 
	price_chg=100.0, 
	pct_chg=4.15, 
	simtrade=0, 
	suspend=0, 
	amount=2510.0
)

Attribute

event:回調事件,當訂閲的事件更新時將被呼叫。回調事件需要定義一個接收事件的參數,該參數會在行情事件更新時傳遞給函數。

Return Attribute

此方法不直接返回值,而是在訂閲行情後,根據event的編制邏輯,當有相關事件更新時執行回調事件,從而實現即時行情事件處理和反應。