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

如何在 QMT 中使用 ContextInfo.get_full_tick 获取买卖五档及分笔实时行情数据?

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

问题描述

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

Title: qmt 实时行情深度:get_full_tick 获取买卖五档及分笔数据

Question: 如何在 qmt 中获取股票的最新盘口五档买卖价和成交量?

解决方案

QMT 实时行情获取指南:使用 ContextInfo.get_full_tick 获取盘口五档及分笔数据

在 QMT(迅投 Print Quant)量化交易平台中,实时捕捉盘口买卖五档价格和挂单量是开发高频交易、网格交易及盘口微观结构策略的核心需求。本文将详细介绍如何利用 Python API 中的 ContextInfo.get_full_tick 函数高效获取实时分笔数据及五档盘口。


1. ContextInfo.get_full_tick 函数详解

get_full_tick 是 QMT 专门用于获取指定合约最新分笔行情(Tick)的接口,包含盘口五档买卖价格和数量。

接口语法

ContextInfo.get_full_tick(stock_code=[])

参数说明

  • stock_code (list): 合约代码列表,格式为 '代码.市场'(例如 ['600000.SH', '000001.SZ'])。若不传或留空,默认获取当前主图合约的实时数据。

返回值结构

函数返回一个字典(dict),key 为合约代码,value 为该合约最新行情数据的字典,主要字段包括:

字段名 类型 说明
lastPrice float 最新成交价
askPrice list 卖价五档(从卖一到卖五)
bidPrice list 买价五档(从买一到买五)
askVol list 卖量五档(从卖一到卖五,单位:手)
bidVol list 买量五档(从买一到买五,单位:手)
amount float 成交总金额
volume int 成交总量(手)
open / high / low / lastClose float 开盘价 / 最高价 / 最低价 / 昨收价

2. 核心示例代码

以下是在 QMT 策略中提取股票买卖五档及最新价的标准实现:

#encoding:gbk

def init(ContextInfo):
    # 设置运行股票池
    ContextInfo.set_universe(['600000.SH', '000001.SZ'])

def handlebar(ContextInfo):
    # 建议仅在最后一根 Bar(即盘中实时 tick 到来时)触发五档读取
    if not ContextInfo.is_last_bar():
        return
    
    stock_list = ['600000.SH', '000001.SZ']
    tick_data = ContextInfo.get_full_tick(stock_list)
    
    for stock in stock_list:
        if stock in tick_data:
            data = tick_data[stock]
            last_price = data.get('lastPrice', 0)
            ask_prices = data.get('askPrice', []) # 卖一至卖五价格
            bid_prices = data.get('bidPrice', []) # 买一至买五价格
            ask_vols = data.get('askVol', [])     # 卖一至卖五挂单量
            bid_vols = data.get('bidVol', [])     # 买一至买五挂单量
            
            print(f"[{stock}] 最新价: {last_price}")
            if ask_prices and bid_prices:
                print(f"  买一: Price={bid_prices[0]}, Vol={bid_vols[0]}")
                print(f"  卖一: Price={ask_prices[0]}, Vol={ask_vols[0]}")

3. 注意事项与最佳实践

  1. 运行模式get_full_tick 用于获取实时盘口快照,在实盘运行模拟运行模式下最为有效;在历史 K 线回测中,获取的是回测当下时间点对应的分笔快照。
  2. 调用时机:盘中实时行情驱动时,handlebar 会随每一个 Tick 的到来而被调用。通过 ContextInfo.is_last_bar() 可以确保策略仅在最新的实时 Tick 点处理五档数据,避免历史数据计算的资源浪费。
  3. 多代码实时订阅:如果策略需要监控非主图的多只股票,配合 ContextInfo.subscribe_quote 使用可以获得更实时的行情推送。