SWQuote.set_event 設定event

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

Example

input
#設定事件處理
def event_sample(event: kgi.SWEvent):
    
    if event.event_code == kgi.SWEvent.event_code.CONNECTED:
        display('【event】:連線事件')
    elif event.event_code == kgi.SWEvent.event_code.DISCONNECTED:
        display('【event】:連線中斷事件')
    elif event.event_code == kgi.SWEvent.event_code.LOGIN_OK:
        display('【event】:登入事件')
    elif event.event_code == kgi.SWEvent.event_code.LOGIN_FAIL:
        display('【event】:登入失敗事件')
    elif event.event_code == kgi.SWEvent.event_code.CONTRACTS_READY:
        display('【event】:合約準備事件')
    elif event.event_code == kgi.SWEvent.event_code.SUBSCRIBE_OK:
        display('【event】:訂閱事件')
    elif event.event_code == kgi.SWEvent.event_code.SUBSCRIBE_FAIL:
        display('【event】:訂閱失敗事件')
    elif event.event_code == kgi.SWEvent.event_code.UNSUBSCRIBE_OK:
        display('【event】:取消訂閱事件')
    elif event.event_code == kgi.SWEvent.event_code.UNSUBSCRIBE_FAIL:
        display('【event】:取消訂閱失敗事件')

    if event.status_code == kgi.SWEvent.status_code.SUCCESSFUL_OPERATION:
        display('【status】:操作成功(SW000)')
    elif event.status_code == kgi.SWEvent.status_code.SW_DISCONNECTED:
        display('【status】:連線斷開(SW001)')
    elif event.status_code == kgi.SWEvent.status_code.SW_LOGIN_FAILED:
        display('【status】:登入失敗(SW002)')
    elif event.status_code == kgi.SWEvent.status_code.SW_SUBSCRIBE_FAILED:
        display('【status】:訂閱失敗(SW003)')
    elif event.status_code == kgi.SWEvent.status_code.SW_SUBSCRIBE_REJECTED:
        display('【status】:訂閱被拒(SW004)')
    elif event.status_code == kgi.SWEvent.status_code.SW_UNSUBSCRIBE_FAILED:
        display('【status】:取消訂閱失敗(SW005)')
    elif event.status_code == kgi.SWEvent.status_code.SW_SUBSCRIBE_LIMITED:
        display('【status】:訂閱數量超限(SW006)')
    elif event.status_code == kgi.SWEvent.status_code.SW_LOGIN_EXHAUSTED:
        display('【status】:登入失敗,所有適用管道皆嘗試失敗(SW007)')
    elif event.status_code == kgi.SWEvent.status_code.SW_LOGIN_NO_AUTH_SOURCE:
        display('【status】:無有效的登入驗證來源(SW008)')
    elif event.status_code == kgi.SWEvent.status_code.SW_LOGIN_NO_CHANNEL:
        display('【status】:伺服器未回傳可用的連線Channels(SW009)')
    elif event.status_code == kgi.SWEvent.status_code.SW_LOGIN_MISSING_CREDENTIALS:
        display('【status】:帳號或密碼為空值(SW010)')


api.SWQuote.set_event(event_sample)

#訂閱行情
api.SWQuote.subscribe('TXFF6')
output
'【event】:連線事件'
'【status】:操作成功 (SW000)'
'【event】:登入事件'
'【status】:操作成功 (SW000)'
'【event】:訂閱事件'
'【status】:操作成功 (SW000)'
SWMarketData(exchange=TAIFEX, 
symbol=TXFF6, 
data_type=0, 
datetime=16:32:45.508, 
open=45101.0, 
high=45285.0, 
low=44911.0, 
close=0.0, 
volume=0, 
total_volume=11321, 
bid_prices=[45205.0, 45204.0, 45203.0, 45202.0, 45201.0], 
bid_volumes=[3, 1, 2, 2, 2], 
ask_prices=[45210.0, 45211.0, 45212.0, 45213.0, 45214.0], 
ask_volumes=[1, 2, 2, 6, 4], 
simtrade=1, 
status_remarks=0, 
raise_fall_remarks=0, 
delay_time=0.0
)

Attribute

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

Return Attribute

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