搞懂 MiniQMT/XtQuant/xtdata 关系,3 种方式获取实时量化数据来啦!
发布时间:15小时前阅读:48
做量化交易,实时行情数据是核心 —— 但很多散户刚接触 MiniQMT 生态,就被「MiniQMT、XtQuant、xtdata」的关系绕晕,更不知道怎么高效拿实时数据。 先理清三者的核心关联,再手把手教你 3 种实时数据获取方法,代码直接复制能用,新手也能快速上手!
谁是 “地基”,谁是 “桥梁”?
用通俗的比喻就能懂,三者是「终端 + 接口 + 数据模块」的黄金组合:
- MiniQMT:量化交易的「本地服务器」核心是和交易所对接,接收、存储行情数据,还提供交易通道。所有数据和交易操作,最终都要靠它落地,必须先启动它才能干活。️
- XtQuant:Python 与 MiniQMT 的「沟通桥梁」是基于 MiniQMT 的 Python 接口库,通过 TCP 连接和本地 MiniQMT 通信,把复杂的底层交互封装成简单的 API。它包含两个核心模块:负责数据的 xtdata,和负责交易的 xttrader。
- xtdata:行情数据的「专属搬运工」是 XtQuant 里专门管数据的模块,不用直接对接交易所,只要向 MiniQMT 发请求,就能拿到历史 / 实时行情、财务数据、板块信息等,相当于量化策略的 “数据管家”。
⚠️ 必看前提: XtQuant 仅支持 64 位 Python 3.6~3.12 版本,导入时自动适配,不用手动切换;运行任何相关程序前,必须先启动 MiniQMT 客户端,否则会连接失败。⚡
xtdata 核心功能
xtdata 能满足量化交易的大部分数据需求,重点看这几类(实时数据是今天核心):✨
- 实时数据:单只股票 / 全市场 tick 数据、特定周期行情;
- 历史数据:日线 / 分钟线 / 周线等 K 线、分笔 tick,支持前复权 / 后复权;
- 基本面 + 基础信息:三大财务报表、交易日历、除权除息数据;
- 特色数据:指数成分股及权重、行业 / 概念板块分类、ETF 申赎清单、期货期权合约数据。
(其他数据功能后续会单独拆解,今天聚焦「实时数据获取」的 3 种实用方式!)
3 种实时数据获取方法
方法 1:先订阅下载,再读取本地数据
适合需要长期持有实时数据、后续复盘的场景,数据会自动存到本地,随时调用。
1️⃣ 步骤
订阅实时行情(单只 / 全市场);
从本地读取已存储的实时数据。
2️⃣ 代码示例
from xtquant import xtdata # 1. 订阅单只股票(以贵州茅台600519.SH为例),也可用subscribe_whole_quote()订阅全市场
seq = xtdata.subscribe_quote("600519.SH") # 返回订阅号,后续取消订阅要用
# 2. 读取本地实时数据(get_market_data_ex功能更全,推荐用)
real_time_data = xtdata.get_market_data_ex(
stock_code="600519.SH",
fields=["latest", "volume", "amount"] # 需获取的字段:最新价、成交量、成交额
)
print("实时行情数据:", real_time_data)
# 注意:如需历史数据+实时数据连贯,先调用下载函数补充历史数据
xtdata.download_history_data("600519.SH", period="1d") # 下载日线历史数据
3️⃣ 关键提醒
订阅后的数据从「调用时刻」开始存储,之前的历史数据需用download_history_data补充;
全市场订阅(subscribe_whole_quote)数据量较大,建议根据策略需求筛选股票。
方法 2:回调函数触发
适合需要 “数据更新即处理” 的场景,比如实时监测股价突破均线就下单,新数据一来就自动触发函数处理。
1️⃣ 步骤
定义回调函数(指定数据更新后要做什么);
订阅行情时绑定回调函数;
启动程序保持运行,等待数据推送。⏳
2️⃣ 代码示例
from xtquant import xtdata
# 1. 定义回调函数:数据更新时自动打印
def data_callback(data):
print("收到实时更新数据:", data)
# 2. 订阅单只股票,绑定回调函数(period=1表示1秒聚合周期)
seq = xtdata.subscribe_quote(
stock_code="600519.SH",
period=1,
callback=data_callback # 绑定回调
)
# 3. 保持程序运行,等待数据推送(不写这句,程序会直接退出)
xtdata.run()
3️⃣ 说明
subscribe_quote(单只股票):每 3 秒(实测约)触发一次回调函数,period 参数控制数据推送周期;⏱️
subscribe_whole_quote(全市场):任何股票有新 tick 数据就触发回调,需注意性能优化;⚠️
回调函数里可直接写策略逻辑(比如判断价格是否达标),不用额外查询数据。
方法 3:直接获取市场快照
适合偶尔查询某一时刻行情的场景,不用提前订阅,调用函数就能拿到当前最新快照,简单高效。
1️⃣ 代码示例
from xtquant import xtdata
# 直接获取单只/多只股票的实时全量tick数据(无需订阅)
# 支持同时查多只,比如["600519.SH", "000858.SZ"]
snapshot_data = xtdata.get_full_tick("600519.SH")
print("当前市场快照:", snapshot_data)
2️⃣ 优势 & 局限
优势:零配置、速度快,不用考虑订阅 / 取消流程;✅
局限:只能获取 “调用瞬间” 的快照,无法获取连续的实时数据流,适合临时查询。❌
重要补充
1️⃣ 如何取消订阅?
每次订阅会返回一个「订阅号 seq」,程序结束前建议主动取消,避免占用资源:❌
# 用订阅时返回的seq取消订阅
xtdata.unsubscribe_quote(seq)
print("已取消订阅")
2️⃣ 常见坑点规避
坑 1:启动程序后拿不到数据→检查 MiniQMT 是否已启动,且登录状态正常;
坑 2:数据字段缺失→确认fields参数是否正确(可查迅投知识库看支持的字段列表);
坑 3:全市场订阅卡顿→减少不必要的字段查询,或按板块筛选股票后分批次订阅。️
如果还想深入了解 xtdata 的历史数据、财务数据获取,或者 xttrader 的交易功能,欢迎关注后续文章,持续分享量化干货!
(注:点我红色头像旁边有个咨询TA,加我微或者电话联系我开户)
温馨提示:投资有风险,选择需谨慎。
-
比黄金还疯狂,白银到底还能投资吗?
2026-02-02 14:15
-
多项政策利好+春节景气上升,【交通+旅居】主线可关注哪些指数?
2026-02-02 14:15
-
美联储2026年第一次议息结束,美股、A股、黄金等资产之后将怎么走?
2026-02-02 14:15


问一问

+微信
分享该文章
