# イベントコントラクト板プッシュ

on_recv_rsp(self, rsp_pb)

  • 説明

    イベントコントラクト板プッシュコールバック。登録済みイベントコントラクトのリアルタイム板データを非同期処理します。 SubType.ORDER_BOOK タイプのイベントコントラクトを登録すると、サーバーが能動的に板データをプッシュします。プッシュ受信時にこの関数がコールバックされます。派生クラスで on_recv_rsp をオーバーライドしてください。

  • パラメータ

    パラメータ 説明
    rsp_pb Qot_UpdateEventContractOrderBook_pb2.Response 派生クラスでは直接処理不要
  • 戻り値

    パラメータ 説明
    ret RET_CODE API呼び出し結果
    data list ret == RET_OK の場合、板データを返します(コントラクトごとに1つの dict)
    str ret != RET_OK の場合、エラーの説明を返します
    • 板データの形式は以下の通りです(各 dict は以下のフィールドを含む):
      フィールド 説明
      code str イベントコントラクトコード
      yes_bids list[tuple] YES 買い板 [(price, size), ...]
      yes_asks list[tuple] YES 売り板 [(price, size), ...]
      no_bids list[tuple] NO 買い板 [(price, size), ...]
      no_asks list[tuple] NO 売り板 [(price, size), ...]
  • Example

import time
from moomoo import *

class EventContractOrderBookHandler(EventContractOrderBookHandlerBase):
    def on_recv_rsp(self, rsp_pb):
        ret_code, content = super(EventContractOrderBookHandler, self).on_recv_rsp(rsp_pb)
        if ret_code != RET_OK:
            print("EventContractOrderBook error:", content)
            return RET_ERROR, content
        for ob in content:
            print("板プッシュ受信:", ob['code'])
            print("  YES 買い板:", ob['yes_bids'])
            print("  YES 売り板:", ob['yes_asks'])
            print("  NO 買い板:", ob['no_bids'])
            print("  NO 売り板:", ob['no_asks'])
        return RET_OK, content

quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
quote_ctx.set_handler(EventContractOrderBookHandler())  # イベントコントラクト板プッシュコールバック設定
ret, data = quote_ctx.subscribe_event_contract(
    code_list=['EC.KXODIMATCH-26JUL140600INDENG-IND'],
    subtype_list=[SubType.ORDER_BOOK])  # イベントコントラクト板タイプを登録、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
27
28
  • Output
板プッシュ受信: EC.KXODIMATCH-26JUL140600INDENG-IND
  YES 買い板: [(0.5, 1030.0), (0.48, 0.01), (0.45, 5.0), (0.43, 1.0), (0.42, 175.0)]
  YES 売り板: [(0.51, 2633.6), (0.52, 15500.0), (0.53, 3000.0), (0.54, 1000.0), (0.55, 2124.0)]
  NO 買い板: [(0.49, 2633.6), (0.48, 15500.0), (0.47, 3000.0), (0.46, 1000.0), (0.45, 2124.0)]
  NO 売り板: [(0.5, 1030.0), (0.52, 0.01), (0.55, 5.0), (0.57, 1.0), (0.58, 175.0)]
1
2
3
4
5