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

QMT 平台如何使用 get_full_tick 获取与分析买卖五档深度盘口数据?(附 Python 源码)

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

问题描述

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

Title: QMT Level-2 高频数据:获取与分析买卖五档深度盘口

Question: 在 QMT 中如何使用 get_full_tick 提取买五卖五盘口挂单量与价格?

解决方案

QMT Level-2 高频数据:获取与分析买卖五档深度盘口

在微观结构分析与高频交易策略中,实时买卖五档数据(包含买1-买5、卖1-卖5的价格与挂单量)是判断盘口买卖力量对比、订单流不平衡(Order Flow Imbalance)的重要依据。QMT 平台提供了原生接口 ContextInfo.get_full_tick(),能够高效获取股票与期货的实时分笔及深度盘口数据。


一、get_full_tick 接口详解

1. 函数定义与参数

ContextInfo.get_full_tick(stock_code=[])
  • 参数stock_code (list) - 合约代码列表,如 ['600000.SH', '000001.SZ']。若不指定,默认获取当前主图合约。
  • 返回值:返回一个字典(dict),Key 为股票代码,Value 为包含最新 Tick 数据的字典。

2. 五档盘口相关字段说明

在返回的字典中,五档盘口相关的核心 Key 包括:

  • askPrice: 卖价列表(卖1到卖5价格,从低到高)
  • askVol: 卖量列表(卖1到卖5挂单量)
  • bidPrice: 买价列表(买1到买5价格,从高到低)
  • bidVol: 买1到买5挂单量
  • lastPrice: 最新成交价
  • amount: 成交额
  • volume: 成交总量(手)

二、Python 策略代码示例

以下策略展示了如何在 handlebar 驱动下提取买卖五档数据,并计算简单的盘口买卖压比率(Bid-Ask Ratio):

#coding:gbk
import numpy as np

def init(ContextInfo):
    # 1. 设定订阅标的股票池
    ContextInfo.stocks = ['600000.SH', '000001.SZ']
    ContextInfo.set_universe(ContextInfo.stocks)
    print("策略初始化完成,开始监控买卖五档盘口...")

def handlebar(ContextInfo):
    # 仅在最新 Bar/Tick 触发时执行盘口分析
    if not ContextInfo.is_last_bar():
        return
    
    # 2. 调用 get_full_tick 获取最新分笔切片
    tick_data = ContextInfo.get_full_tick(ContextInfo.stocks)
    
    for code in ContextInfo.stocks:
        if code in tick_data:
            data = tick_data[code]
            
            # 提取买卖五档价格与挂单量列表
            ask_prices = data.get('askPrice', []) # [卖1, 卖2, 卖3, 卖4, 卖5]
            ask_vols = data.get('askVol', [])     # [卖1量, 卖2量, ...]
            bid_prices = data.get('bidPrice', []) # [买1, 买2, 买3, 买4, 买5]
            bid_vols = data.get('bidVol', [])     # [买1量, 买2量, ...]
            
            last_price = data.get('lastPrice', 0.0)
            
            # 计算买五档与卖五档的总挂单量
            total_bid_vol = sum(bid_vols)
            total_ask_vol = sum(ask_vols)
            
            # 计算盘口挂单买卖比(Quantity Imbalance)
            imbalance = (total_bid_vol - total_ask_vol) / (total_bid_vol + total_ask_vol) if (total_bid_vol + total_ask_vol) > 0 else 0
            
            # 打印盘口深度信息
            print(f"=== [{code}] 最新价: {last_price} ===")
            print(f"卖五: {ask_prices[4]:.2f} | 挂单量: {ask_vols[4]}")
            print(f"卖一: {ask_prices[0]:.2f} | 挂单量: {ask_vols[0]}")
            print(f"----------------------------------------")
            print(f"买一: {bid_prices[0]:.2f} | 挂单量: {bid_vols[0]}")
            print(f"买五: {bid_prices[4]:.2f} | 挂单量: {bid_vols[4]}")
            print(f"买压偏向(Imbalance): {imbalance:.2%}\n")

三、盘口分析常见应用场景

  1. 订单流不平衡 (Order Flow Imbalance, OFI):通过买一卖一挂单量与价格变动的结合,预测未来数个 Tick 的短期价格走势。
  2. 大单大压/大支撑检测:检索五档列表中是否有远高于平均挂单量的巨量挂单,识别潜在阻力位或支撑位。
  3. 冲击成本计算:估算大单以市价成交时,穿透五档盘口所产生的滑点成本,指导算法拆单(如 VWAP/TWAP)的执行。