🚀 AI 一键生成 qmt 策略代码

如何使用 QMT 的 get_market_data_ex 获取 Level-2 行情快照指标?

qmt | 发布时间: 2025/11/24
以下内容由 EasyQuant 生成。

问题描述

如何获取实时委买均价和委卖均价数据?

解决方案

在 QMT 中,获取实时委买均价(avgBidPrice)和委卖均价(avgOffPrice)属于 Level-2 行情快照指标。

你需要使用 get_market_data_ex 接口,并将周期参数 period 设置为 'l2quoteaux'

注意: 使用此功能通常需要账号开通 Level-2 增强版权限

以下是具体的代码实现示例:

# -*- coding: gbk -*-

def init(ContextInfo):
    # 设置需要获取数据的股票池
    ContextInfo.stock_list = ['600000.SH', '000001.SZ']
    ContextInfo.set_universe(ContextInfo.stock_list)

def handlebar(ContextInfo):
    # 仅在最后一根K线(实时行情)时获取
    if not ContextInfo.is_last_bar():
        return

    # 定义需要获取的字段
    # avgBidPrice: 委买均价
    # avgOffPrice: 委卖均价
    fields = ['avgBidPrice', 'avgOffPrice']

    # 获取 Level-2 行情快照数据
    # period='l2quoteaux' 是获取此类指标的关键参数
    l2_data = ContextInfo.get_market_data_ex(
        fields=fields,
        stock_code=ContextInfo.stock_list,
        period='l2quoteaux',
        count=-1  # 获取最新一笔
    )

    # 遍历结果并打印
    for stock_code, df in l2_data.items():
        if not df.empty:
            # 获取最新的一行数据
            latest_data = df.iloc[-1]
            
            avg_bid = latest_data.get('avgBidPrice')
            avg_ask = latest_data.get('avgOffPrice')
            
            print(f"股票: {stock_code}")
            print(f"  委买均价: {avg_bid}")
            print(f"  委卖均价: {avg_ask}")
            print("-" * 30)
        else:
            print(f"股票: {stock_code} 无 Level-2 快照数据")

关键点说明:

  1. 接口函数:必须使用 ContextInfo.get_market_data_ex
  2. 周期参数period 必须设置为 'l2quoteaux'
  3. 字段名称
    • avgBidPrice:委买均价
    • avgOffPrice:委卖均价
  4. 订阅模式:如果你希望通过数据推送的方式获取(而不是在 handlebar 中轮询),可以使用 ContextInfo.subscribe_quote 接口,同样将 period 设置为 'l2quoteaux',并在回调函数中处理数据。