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

QMT 平台 get_full_tick 函数获取数据的两种方式及区别

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

问题描述

get_full_tick是怎么获取数据的?

1、直接 get_full_tick
2、先 subscribe_whole_quote 再 get_full_tick
请问两个方式 get_full_tick 是怎么获取数据的?有什么区别

解决方案

在 QMT 平台中,get_full_tick 是用于获取最新分笔(Tick)数据的核心函数。关于直接调用和先订阅再调用的区别,主要体现在数据更新机制本地缓存的实时性上。

1. 直接调用 get_full_tick

获取机制
当你直接调用 ContextInfo.get_full_tick(stock_code) 时,QMT 会直接去读取本地内存缓存中该股票的最新 Tick 数据。

特点与隐患

  • 如果该股票是当前主图品种,或者已经在股票池(Universe)中被平台默认维护,你能获取到相对最新的数据。
  • 如果该股票不在主图且未被订阅,本地缓存可能不会在后台实时高频更新。此时直接调用,可能会获取到旧的快照数据,或者需要触发一次同步的网络请求(导致策略执行出现微小延迟)。

2. 先订阅(如 subscribe_quote)再调用 get_full_tick

获取机制
当你先使用 ContextInfo.subscribe_quote()(或全推订阅接口)订阅了相关股票的 Tick 行情后,QMT 终端会向服务器注册这些股票的行情推送。服务器会主动、实时地将最新的 Tick 数据推送到本地,并持续更新本地内存缓存。
此时再调用 get_full_tick,实际上是直接从已经保持最新状态的本地内存中极速读取数据。

特点与优势

  • 极高的实时性:数据由服务器主动推送,本地缓存永远是最新状态,读取时没有网络等待时间。
  • 事件驱动:结合回调函数(Callback),可以在 Tick 数据到达的瞬间立刻触发逻辑,然后再用 get_full_tick 提取完整字段,非常适合高频或对延迟敏感的策略。

总结与建议

对比维度 直接调用 get_full_tick 先订阅再调用 get_full_tick
数据更新方式 被动读取(可能依赖主图或触发同步拉取) 主动推送(服务器实时推送到本地缓存)
实时性 较低(非主图品种可能存在延迟或数据陈旧) 极高(本地缓存始终保持最新)
适用场景 偶尔查询某只股票的状态,对毫秒级延迟不敏感的低频策略 多品种监控、高频交易、对 Tick 级别信号要求极高的策略

最佳实践
如果你需要监控非主图的多个品种,或者编写对实时性要求较高的 Tick 级策略,强烈建议先使用 subscribe_quote 订阅行情,然后再通过 get_full_tick 获取完整数据。这样既能保证数据的绝对新鲜,又能最大化利用 QMT 的本地内存读取性能。