🚀 AI 一键生成 qmt 策略代码
立即体验

QMT 平台如何提取 Level-2 买卖五档数据并计算挂单压差?(附 Python 源码)

qmt | 发布时间: 2026/7/31
以下内容由 EasyQuant 生成。

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: QMT Level-2 盘口深度数据提取与买卖挂单差分析

Question: 如何通过 get_full_tick 接口分析股票盘口买卖五档及撤单压力?

解决方案

QMT Level-2 盘口深度数据提取与买卖挂单差分析

在微观高频量化策略与盘口执行算法中,实时分析买卖盘口的深度数据(五档挂单价格与挂单量)是判断短期价格压力与支撑的关键。QMT 平台提供了便捷的 ContextInfo.get_full_tick() 接口,帮助开发者实时提取盘口数据并构建量化指标。


1. get_full_tick 接口详解

ContextInfo.get_full_tick(stock_code) 用于获取合约最新的 Tick 快照数据,返回一个包含五档买卖盘口及量价信息的字典。

关键盘口字段

  • askPrice: 卖价五档列表,顺序为 [卖一, 卖二, 卖三, 卖四, 卖五]
  • askVol: 卖量五档列表,顺序同上
  • bidPrice: 买价五档列表,顺序为 [买一, 买二, 买三, 买四, 买五]
  • bidVol: 买量五档列表,顺序同上
  • lastPrice: 最新成交价

2. 买卖挂单压差指标公式

定义五档总买量与五档总卖量:
$$\text{TotalBidVol} = \sum_{i=1}^{5} \text{bidVol}i$$
$$\text{TotalAskVol} = \sum
{i=1}^{5} \text{askVol}_i$$

买卖挂单压差(Order Book Imbalance)可计算为:
$$\text{Imbalance} = \frac{\text{TotalBidVol} - \text{TotalAskVol}}{\text{TotalBidVol} + \text{TotalAskVol}}$$

  • Imbalance > 0:买盘挂单较强,下方支撑相对稳固。
  • Imbalance < 0:卖盘挂单压顶,上方存在抛压。

3. Python 策略源码实现

以下策略在 QMT 平台的实时运行或最新 Bar 触发时获取 600000.SH 的五档盘口,并计算挂单压差:

#coding:gbk

def init(ContextInfo):
    ContextInfo.stock = '600000.SH'
    ContextInfo.set_universe([ContextInfo.stock])
    print("策略初始化:开始监控盘口五档压差")

def handlebar(ContextInfo):
    # 仅在最新 Bar 判定执行,避免历史 Bar 重复触发
    if not ContextInfo.is_last_bar():
        return
    
    stock = ContextInfo.stock
    # 获取最新 Tick 快照
    tick_data = ContextInfo.get_full_tick([stock])
    
    if stock in tick_data:
        info = tick_data[stock]
        
        ask_vols = info.get('askVol', [])
        bid_vols = info.get('bidVol', [])
        last_price = info.get('lastPrice', 0)
        
        total_ask_vol = sum(ask_vols)
        total_bid_vol = sum(bid_vols)
        
        total_vol = total_ask_vol + total_bid_vol
        if total_vol > 0:
            imbalance = (total_bid_vol - total_ask_vol) / total_vol
        else:
            imbalance = 0.0
            
        print(f"[盘口分析] {stock} | 最新价: {last_price}")
        print(f"卖五档总量: {total_ask_vol} | 买五档总量: {total_bid_vol}")
        print(f"买卖挂单倾斜度 (Imbalance): {imbalance:.2%}")
        
        # 信号判定逻辑示例
        if imbalance > 0.4:
            print("【信号】买盘支撑强劲,关注突破买入机会")
        elif imbalance < -0.4:
            print("【信号】卖盘压顶严重,注意防范回调风险")

4. 优化建议与高级应用

  1. 加权深度计算:距离最新价越近的档位(如买一、卖一)权重越大,可对五档挂单量采用衰减加权。
  2. Level-2 逐笔结合:结合 Level-2 逐笔撤单数据与行情订阅(通过 subscribe_quote 订阅 l2quoteaux)可实时捕捉大单撤单与挂单变动,提升盘口微观结构判断的准确度。