# 事件合约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