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

QMT 平台如何使用 get_full_tick 获取股票的五档买卖盘和最新成交价?

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

问题描述

qmt 盘口深度:使用 get_full_tick 获取五档买卖盘数据
QMT中如何使用 get_full_tick 获取股票的五档买卖盘和最新成交价?

解决方案

在 QMT(Quantitative Trading System)量化交易平台中,获取股票的实时盘口深度数据(如五档买卖盘、最新成交价等)是构建高频交易、网格交易或盘口策略的基础。QMT 提供了 ContextInfo.get_full_tick(stock_code) 接口来满足这一需求。

一、get_full_tick 接口详解

1. 函数原型

ContextInfo.get_full_tick(stock_code=[])

2. 参数说明

  • stock_code: 列表(list)类型,传入需要获取盘口数据的股票代码列表(格式为 代码.市场,例如 ['600000.SH', '000001.SZ'])。如果不指定,默认获取当前主图合约的数据。

3. 返回值结构

返回一个嵌套字典(dict)。外层字典的 Key 是股票代码,Value 是一个包含该股票最新盘口数据的内层字典。内层字典包含以下核心字段:

  • lastPrice: 最新成交价
  • askPrice: 卖价五档列表(从卖一到卖五)
  • bidPrice: 买价五档列表(从买一到买五)
  • askVol: 卖量五档列表(从卖一到卖五,单位:手)
  • bidVol: 买量五档列表(从买一到买五,单位:手)
  • volume: 成交总量(手)
  • amount: 成交额

二、Python 策略源码示例

以下是一个完整的 QMT 策略示例,展示了如何在 handlebar 行情驱动函数中,使用 get_full_tick 实时获取并打印指定股票的最新价及五档买卖盘数据。

#encoding:gbk
import time

def init(ContextInfo):
    # 设定需要监控的股票池
    ContextInfo.stock_list = ['600000.SH', '000001.SZ']
    ContextInfo.set_universe(ContextInfo.stock_list)
    print("初始化完成,开始监控盘口数据...")

def handlebar(ContextInfo):
    # 仅在最后一根 K 线(即盘中实时行情)时执行,避免历史回测时输出过多日志
    if not ContextInfo.is_last_bar():
        return
        
    # 获取最新分笔盘口数据
    tick_data = ContextInfo.get_full_tick(ContextInfo.stock_list)
    
    for stock in ContextInfo.stock_list:
        if stock in tick_data:
            data = tick_data[stock]
            
            # 提取最新价与五档数据
            last_price = data.get('lastPrice', 0.0)
            ask_prices = data.get('askPrice', [])
            ask_vols = data.get('askVol', [])
            bid_prices = data.get('bidPrice', [])
            bid_vols = data.get('bidVol', [])
            
            # 打印盘口信息
            print(f"\n====== 股票代码: {stock} ======")
            print(f"最新成交价: {last_price}")
            print("----------------------------")
            # 打印卖五到卖一
            for i in range(4, -1, -1):
                if len(ask_prices) > i:
                    print(f"卖 {i+1} | 价格: {ask_prices[i]:.2f} | 数量: {ask_vols[i]}")
            print("----------------------------")
            # 打印买一到买五
            for i in range(5):
                if len(bid_prices) > i:
                    print(f"买 {i+1} | 价格: {bid_prices[i]:.2f} | 数量: {bid_vols[i]}")
            print("============================\n")

三、注意事项

  1. 实时性get_full_tick 获取的是最新的实时快照数据,在盘中会随着 Tick 数据的推送而更新。建议在 handlebar 中配合 ContextInfo.is_last_bar() 使用,以确保只在最新 Tick 到来时触发逻辑。
  2. 数据下载:在实盘或模拟盘运行前,请确保客户端已正常连接行情服务器,并已在“数据管理”中补充了对应品种的实时行情数据。
  3. 单位说明:返回的五档成交量(askVol / bidVol)单位通常为“手”(1手 = 100股),在计算实际委托股数时需注意换算。