# 事件合約 K 線推送

on_recv_rsp(self, rsp_pb)

  • 介紹

    事件合約 K 線推送回呼,非同步處理已訂閱事件合約的實時 K 線推送。
    在收到事件合約 K 線數據推送後會回呼到該函數,您需要在衍生類別中覆寫 on_recv_rsp。

  • 參數

    參數 類型 説明
    rsp_pb Qot_UpdateEventContractKline_pb2.Response 衍生類別中不需要直接處理該參數
  • 返回

    參數 類型 説明
    ret RET_CODE 介面呼叫結果
    data pd.DataFrame 當 ret == RET_OK,返回事件合約 K 線數據
    str 當 ret != RET_OK,返回錯誤描述
    • K 線數據格式如下:
      字段 類型 説明
      code str 事件合約代碼
      pre_side PredSide 合約方向(YES/NO),合約 K 線時有值,事件 K 線以服務端返回為準
      name str 合約名稱
      time_key str K 線時間
      open float 開盤價
      high float 最高價
      low float 最低價
      close float 收盤價
      volume float 成交量
  • Example

import time
from moomoo import *

class EventContractKlineTest(EventContractKlineHandlerBase):
    def on_recv_rsp(self, rsp_pb):
        ret_code, data = super(EventContractKlineTest, self).on_recv_rsp(rsp_pb)
        if ret_code != RET_OK:
            print("EventContractKlineTest: error, msg: %s" % data)
            return RET_ERROR, data
        print("EventContractKlineTest ", data)  # EventContractKlineTest 自訂處理邏輯
        return RET_OK, data

quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
handler = EventContractKlineTest()
quote_ctx.set_handler(handler)  # 設置事件合約 K 線推送回呼
ret, data = quote_ctx.subscribe_event_contract(
    code_list=['EC.KXODIMATCH-26JUL140600INDENG-IND'],
    subtype_list=[SubType.K_DAY],
    kline_source_list=[ECKlineSource.NONE],
    subscribe_push=True)  # 訂閱 K 線類型,OpenD 開始持續收到伺服器的推送
if ret == RET_OK:
    print(data)
else:
    print('error:', data)
time.sleep(15)  # 設置腳本接收 OpenD 的推送持續時間為15秒
quote_ctx.close()   # 關閉當條連線,OpenD 會在1分鐘後自動取消相應事件合約相應類型的訂閱
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  • Output
EventContractKlineTest                                   code pre_side                      name             time_key  open  high   low  close  volume
0  EC.KXODIMATCH-26JUL140600INDENG-IND      YES  England vs India Winner?  2026-07-13 00:00:00  0.51  0.52  0.48    0.5  7831.0
1
2