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

QMT量化平台在集合竞价阶段是否能取到行情?(附获取方法)

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

问题描述

在集合竞价阶段是否能取到行情?

个股只要盘口有变化,都有行情推送,如果是策略里面获取此时的行情,需要用订阅模式(例如subscribe_quote)或者get_fu1l _tick函数等方式。需要注意的是如果策略的主逻辑写在 handlebar 里,则主图代码需要选择有行情推送的个股,主图代码的行情驱动 handlebar的运行,如果主图代码选的是指数,那就只有9:25才有一条数据。

解决方案

QMT 集合竞价阶段行情获取指南

在 QMT 量化交易平台中,在集合竞价阶段是完全可以取到行情数据的

个股只要盘口有变化,系统都会有实时的行情推送。为了在策略中准确、及时地获取集合竞价期间的行情,开发者需要注意数据获取的方式以及 QMT 底层的运行驱动机制。

1. 推荐的行情获取方式

如果在策略里面需要获取集合竞价此时的行情,建议使用以下两种方式:

  • 订阅模式 (subscribe_quote):通过 ContextInfo.subscribe_quote() 函数订阅特定代码的行情数据。这种方式可以在某只代码行情更新后立即触发回调函数执行,非常适合处理盘口高频变化。
  • 全量分笔数据 (get_full_tick):通过 ContextInfo.get_full_tick() 函数主动拉取指定股票列表的最新分笔(Tick)数据,包含最新的买卖五档盘口信息。

2. 注意事项:Handlebar 驱动机制

在 QMT 中,handlebar(ContextInfo) 是核心的行情事件函数。它的运行机制是由主图代码的行情(Tick)来驱动的。因此,在集合竞价阶段使用时,有以下极其重要的注意事项:

  • 主图品种的选择:如果你的策略主逻辑写在 handlebar 里,那么主图代码必须选择有行情推送的个股。因为个股在集合竞价期间盘口变动频繁,能够不断触发 handlebar 运行。
  • 避免使用指数作为主图:如果主图代码选的是指数(如上证指数、沪深300等),由于指数在集合竞价期间通常只有 9:25 才会产生一条确定的开盘数据,这就导致你的 handlebar 在 9:15 到 9:25 之间根本不会被驱动执行,从而让你误以为“取不到行情”。

3. 代码示例:使用 subscribe_quote 获取行情

#coding:gbk

def init(ContextInfo):
    # 订阅平安银行的 tick 行情,当有盘口变化时触发 on_quote 回调
    ContextInfo.subscribe_quote('000001.SZ', period='tick', dividend_type='none', callback=on_quote)

def on_quote(datas):
    # 集合竞价期间,只要盘口变动就会打印数据
    print("收到最新行情:", datas)

def handlebar(ContextInfo):
    # 如果主图是个股,这里也会随主图 tick 驱动
    pass

总结:集合竞价阶段可以获取行情,关键在于使用 subscribe_quoteget_full_tick,并确保策略的驱动源(主图品种)在集合竞价期间有活跃的 Tick 推送。