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

QMT 平台如何获取 Level-2 买卖撤单总量并计算撤单比例?(附 Python 源码)

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

问题描述

QMT 高频因子:利用 Level-2 撤单数据监测主力诱多诱空行为
QMT如何获取Level 2买卖撤单总量并计算撤单比例?

解决方案

QMT 高频因子:利用 Level-2 撤单数据监测主力诱多诱空行为

在量化高频交易中,主力资金经常通过“闪撤单”(Spoofing)在盘口挂出大单制造买卖压力假象(诱多或诱空),随后迅速撤单。通过监测 Level-2 的买入撤单总量卖出撤单总量,并计算其占总委托量的比例,可以有效识别这种欺骗性行为。

QMT 平台提供了强大的 Level-2 数据接口,支持获取行情快照指标。以下是具体实现方法及 Python 源码。


1. 核心接口与字段说明

要获取 Level-2 撤单数据,需要使用 ContextInfo.get_market_data_ex 接口,并将周期参数 period 设置为 'l2quoteaux'(Level2 行情快照指标)。

关键字段:

  • withdrawBidQuantity: 买入撤单总量
  • withdrawOffQuantity: 卖出撤单总量
  • totalBidQuantity: 委买总量
  • totalOffQuantity: 委卖总量

撤单比例计算公式:

  • 买入撤单比例 (Bid Withdrawal Ratio) = $买入撤单总量 / (委买总量 + 买入撤单总量)$
  • 卖出撤单比例 (Ask Withdrawal Ratio) = $卖出撤单总量 / (委卖总量 + 卖出撤单总量)$

2. Python 策略源码示例

以下代码展示了如何在 QMT 中订阅并获取指定股票的 Level-2 撤单数据,并实时计算撤单比例因子:

#encoding:gbk
import pandas as pd

def init(ContextInfo):
    # 设定需要监测的股票池
    ContextInfo.stock_list = ['600000.SH']
    ContextInfo.set_universe(ContextInfo.stock_list)
    print("Level-2 撤单监控因子初始化成功")

def handlebar(ContextInfo):
    # 仅在最后一根 Bar(最新 Tick 驱动)时执行计算
    if not ContextInfo.is_last_bar():
        return
        
    for stock in ContextInfo.stock_list:
        # 获取 Level-2 行情快照指标
        l2_data = ContextInfo.get_market_data_ex(
            fields=['withdrawBidQuantity', 'withdrawOffQuantity', 'totalBidQuantity', 'totalOffQuantity'],
            stock_code=[stock],
            period='l2quoteaux',
            count=1
        )
        
        if stock in l2_data and not l2_data[stock].empty:
            df = l2_data[stock]
            
            # 提取最新一笔快照数据
            withdraw_bid = df['withdrawBidQuantity'].iloc[-1]
            withdraw_off = df['withdrawOffQuantity'].iloc[-1]
            total_bid = df['totalBidQuantity'].iloc[-1]
            total_off = df['totalOffQuantity'].iloc[-1]
            
            # 计算买入撤单比例
            bid_denom = total_bid + withdraw_bid
            bid_ratio = (withdraw_bid / bid_denom) if bid_denom > 0 else 0.0
            
            # 计算卖出撤单比例
            off_denom = total_off + withdraw_off
            off_ratio = (withdraw_off / off_denom) if off_denom > 0 else 0.0
            
            # 打印监控结果
            print(f"股票: {stock} | 委买总量: {total_bid} | 买入撤单: {withdraw_bid} | 买入撤单比例: {bid_ratio:.2%}")
            print(f"股票: {stock} | 委卖总量: {total_off} | 卖出撤单: {withdraw_off} | 卖出撤单比例: {off_ratio:.2%}")
            
            # 诱多诱空逻辑研判
            if bid_ratio > 0.8 and total_bid > 100000:
                print(f"【警惕】{stock} 出现高比例买单撤销({bid_ratio:.2%}),可能存在主力诱多后撤单行为!")
            elif off_ratio > 0.8 and total_off > 100000:
                print(f"【警惕】{stock} 出现高比例卖单撤销({off_ratio:.2%}),可能存在主力诱空后撤单行为!")

3. 交易实战应用建议

  1. 阈值过滤:在实际交易中,应结合委买/委卖总量进行绝对值过滤(如上文代码中的 total_bid > 100000),避免因小额散户撤单导致因子失真。
  2. 多因子共振:撤单比例因子可与 Level-2 逐笔成交统计中的大单动向(DDX)、资金博弈指标结合使用,以提高对主力资金真实意图研判的准确率。
  3. 权限说明:获取 Level-2 特色指标快照需要额外开通券商的 Level-2 增强版权限,回测前请确保本地已补充对应的多因子及 L2 历史数据。