首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >迅投miniqmt行情数据subscribe_whole_quote、subscribe_quote、get_full_tick怎么选

迅投miniqmt行情数据subscribe_whole_quote、subscribe_quote、get_full_tick怎么选

作者头像
子晓聊技术
发布2026-05-26 20:30:04
发布2026-05-26 20:30:04
890
举报
文章被收录于专栏:子晓AI量化子晓AI量化

最近有同学反馈用get_full_tick频繁获取全市场数据卡死, 我当时推荐他用subscribe_whole_quote。 这里聊一聊获取行情数据subscribe_whole_quote、subscribe_quote、get_full_tick这几个的区别。

一、三个比喻,秒懂核心差异

想象一下,你是一个操盘手,需要时刻关注市场动态。

  • subscribe_whole_quote 就像你在交易大厅装了一个 “全市场警报器”。你告诉它:“关注全市场股票,有任何一只出现新的成交(TICK),就立刻告诉我变化的那部分数据。” —— 它批量监听,有变才报,效率极高。
  • subscribe_quote 则像你雇了一个 “专职盯盘助手”。你对他说:“给我死死盯住茅台这支股票,每来一个新TICK,或者每分钟收线,都完整向我汇报一次。” —— 它精准盯防,事无巨细,延迟最低,但资源消耗也大。
  • get_full_tick 更像你随手拿起遥控器 “拍一张电视快照”。你需要的时候,啪一下,把当前屏幕上所有股票的最新价、成交量等信息截取下来。 —— 它即取即用,不问过往,成本极低,但信息是瞬时的。

是不是一下子就清晰了?下面我们深入技术细节。

二、适用场景、优缺点

1. subscribe_whole_quote —— 全市场高效推送器

  • 工作模式:被动推送,增量更新。只有订阅的标的发生变化时,QMT 才会把变化的数据(比如最新价、成交量)推给你。
  • 数据粒度:仅限 TICK 分笔数据(交易所每笔成交)。
  • 适用场景:你需要同时监控大量股票(比如一个股票池),并实时捕捉它们的异动,但不需要每笔成交的完整信息。
  • 优点:网络带宽和计算资源消耗小,因为只传输变化量。
  • 缺点:只能拿到 TICK 数据,不能直接订阅 K 线

2. subscribe_quote —— 精准定点监控器

  • 工作模式:被动推送,完整推送。你指定一个或几个标的,以及一个周期(TICK、1分钟、5分钟、日线等),每到周期结束,QMT 就把这个周期的完整 Bar 数据推送给你。
  • 数据粒度:TICK 或任意 K 线周期。
  • 适用场景:你正在交易少数几只股票,需要最低延迟的 TICK 数据来驱动高频策略,或者需要自定义周期的 K 线来观察持仓走势。
  • 优点:延迟极低,数据完整,支持多周期。
  • 缺点:每个订阅的标都会持续占用连接资源,订阅数量不宜多(一般不超过几十个)。

3. get_full_tick —— 轻量级快照抓取器

  • 工作模式:主动拉取,一问一答。你调用它时,它直接从本地缓存中取出所有已订阅品种的最新 TICK 快照给你。
  • 数据粒度:TICK 快照(最新一笔)。
  • 适用场景:你需要快速扫一遍全市场或一个大板块的现价、涨跌幅等;或者在策略启动时做一次初始数据获取;又或者你的监控频率很低(比如每几秒一次),不想占用订阅额度。
  • 优点不占订阅额度,可以获取全市场数千只股票的快照;调用简单,无回调管理。
  • 缺点:不是被动推送,需要你自己写循环去轮询;延迟比推送模式稍高(一般在几十毫秒级别)

三、实战例子

光说不练假把式。下面用 Python 代码片段展示每个函数的具体用法。

1、 subscribe_whole_quote 盯全市场变化

代码语言:javascript
复制
from xtquant import xtdata
import datetime
def on_market_data(data):
    """全市场数据回调函数"""
    current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
    print(f"当前时间:{current_time}")
    print(f"收到{len(data)}只股票的数据")
    for stock_code, stock_data in data.items():
      last_price = stock_data.get('lastPrice', 'N/A')
      volume = stock_data.get('volume', 'N/A')
      print(f"股票{stock_code}最新价:{last_price}, 成交量:{volume}")
# 订阅沪深两市的 tick 数据
seq = xtdata.subscribe_whole_quote(code_list=['SH', 'SZ'], callback=on_market_data)
# 运行程序接收数据
xtdata.run()
# 取消订阅(可选)
# xtdata.unsubscribe_quote(seq)

2、subscribe_quote 盯住你的持仓股

你持有茅台和宁德时代,需要以最低延迟获得每一笔TICK数据来驱动你的高频做T策略。

代码语言:javascript
复制
from xtquant import xtdata
def simple_callback(data):
print(f"收到行情数据: {data}")
# 订阅上证指数的1分钟线
handle = xtdata.subscribe_quote(
stock_code='000001.SH',
period='1m',
callback=simple_callback
)
xtdata.run()  # 保持程序运行以接收数据
代码语言:javascript
复制
3、get_full_tick 快速查询
代码语言:javascript
复制
import xtquant.xtdata as xtdata
from datetime import datetime, timedelta
import time
def get_all_stock_codes():
    """获取沪深两市所有A股股票代码"""
    return xtdata.get_stock_list_in_sector("沪深A股")
def get_realtime_market_status():
    """
    实时统计涨跌家数(盘中使用)
    返回: (上涨家数, 下跌家数, 平盘家数, 无效数据家数)
    """
    stock_codes = get_all_stock_codes()
    quotes = xtdata.get_full_tick(stock_codes)
    up = down = unchanged = invalid = 0
    for code in stock_codes:
        data = quotes.get(code, {})
        last_price = data.get('lastPrice')
        pre_close = data.get('lastClose')
        # 过滤无效数据
        if last_price is None or pre_close is None or pre_close == 0:
            invalid += 1
            continue
        # 计算涨跌幅(避免浮点误差)
        change_pct = (last_price - pre_close) / pre_close * 100
        if change_pct > 1e-6:
            up += 1
        elif change_pct < -1e-6:
            down += 1
        else:
            unchanged += 1
    return up, down, unchanged, invalid
if __name__ == "__main__":
    print("=== 实时涨跌统计 ===")
    up, down, unchanged, invalid = get_realtime_market_status()
    print(f"上涨: {up}, 下跌: {down}, 平盘: {unchanged}, 无效数据: {invalid}")

四、最后总结

  • 想要低延迟监控全市场股票池subscribe_whole_quote
  • 想要最低延迟盯着自己那几只持仓股做高频subscribe_quote
  • 想要低成本、低频率地扫一遍很多股票get_full_tick + 轮询
  • 开盘瞬间快速筛选get_full_tick
  • 需要1分钟、5分钟K线数据 → 只能用 subscribe_quote

没有哪个函数是万能的,关键是理解它们的性格,然后组合使用。比如,每天早上先用 get_full_tick 快速扫描选出强势板块,然后对板块内的个股用 subscribe_whole_quote 实时监控异动,最后对真正开仓的股票用 subscribe_quote 进行 TICK 级精准盯盘。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 子晓聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、适用场景、优缺点
    • 1. subscribe_whole_quote —— 全市场高效推送器
    • 2. subscribe_quote —— 精准定点监控器
    • 3. get_full_tick —— 轻量级快照抓取器
    • 1、 subscribe_whole_quote 盯全市场变化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档