本文承接 QMT 历史数据下载系列上篇,重点拆解 xtquant 模块中三大核心行情接口的差异与实操用法,对比不同接口的适用场景、返回格式与使用限制,附带可直接运行的完整代码,帮助大家快速选型、少走弯路。
一、get_market_data 与 get_market_data_ex 对比
两个接口均基于 miniQMT 服务获取行情数据,但在数据覆盖范围、返回结构上有明确分工,适配不同的开发需求。
1.1 核心差异汇总
| 对比维度 | get_market_data | get_market_data_ex |
|---|---|---|
| 数据类型支持 | 主打基础 K 线数据,覆盖股票、指数等常规标的 | 支持更多进阶数据类型,包括 ETF 申赎清单、期货主力合约、高级周期 K 线等 |
| 返回格式 | 返回 dict 字典,key 为字段名,value 为对应 DataFrame | 直接返回 DataFrame,列名即为请求的字段名 |
| 适配场景 | 多只股票批量提取单个 / 少量字段 | 单只股票批量提取多个指标 |
1.2 完整代码示例
from xtquant import xtdata
# 批量下载多只股票的日线历史数据
xtdata.download_history_data2(
stock_list=["000001.SZ", "600000.SH"],
period="1d",
start_time="20240101",
)
# 示例1:get_market_data 批量获取多只股票收盘价
# 返回字典结构,便于循环遍历多标的数据
data1 = xtdata.get_market_data(
field_list=["time", "close"],
stock_list=["000001.SZ", "600000.SH"],
period="1d",
start_time="20240101"
)
# 示例2:get_market_data_ex 获取单只股票多维度指标
# 直接返回DataFrame,适合单标的多因子分析
data2 = xtdata.get_market_data_ex(
field_list=["time", "close", "volume", "amount"],
stock_list=["000001.SZ"],
period="1d",
start_time="20240101"
)
二、get_market_data 与 get_local_data 对比
两个接口的核心区别在于数据来源,分别对应「在线实时获取」和「离线本地读取」两大场景。
2.1 核心差异汇总
| 对比维度 | get_market_data | get_local_data |
|---|---|---|
| 数据获取方式 | 通过 miniQMT 后台服务拉取数据,必须保持 miniQMT 客户端运行 | 直接读取本地已缓存的数据文件,不依赖 miniQMT 服务 |
| 使用限制 | 需 miniQMT 在线运行,功能完整,支持历史 + 实时数据 | 可离线使用,仅能读取已提前下载到本地的数据 |
| 适配场景 | 实盘交易、实时盯盘、在线策略回测 | 离线回测、无网络环境、本地批量数据处理 |
2.2 完整代码示例
from xtquant import xtdata
# 第一步:提前下载数据到本地缓存
xtdata.download_history_data(
stock_code="000001.SZ",
period="1d",
start_time="20240101"
)
# 示例1:在线模式 - 通过miniQMT服务获取数据
data_online = xtdata.get_market_data(
field_list=["time", "close"],
stock_list=["000001.SZ"],
period="1d",
start_time="20240101"
)
# 示例2:离线模式 - 直接读取本地已下载的数据
data_local = xtdata.get_local_data(
field_list=["time", "close"],
stock_list=["000001.SZ"],
period="1d",
start_time="20240101"
)
三、使用注意事项
- 代码规范 :股票代码必须补全市场后缀(
.SZ/.SH),周期参数支持1d(日线)、1m(1 分钟)、tick等多种粒度。 - 数据范围 :
get_local_data可读取的时间范围,完全取决于download_history_data提前下载的区间,未下载的时间段无法获取数据。 - 选型建议 :
- 多标的批量回测优先用
get_market_data - 单标的多因子分析优先用
get_market_data_ex - 服务器离线运行、无图形界面场景,用「下载 + 本地读取」组合方案
- 多标的批量回测优先用
总结
以上就是 xtquant 行情模块三大核心接口的全部对比与实操教程。三个接口各有侧重,合理搭配可以覆盖在线实盘、离线回测、批量数据清洗等绝大多数量化开发场景。文中所有代码均为可直接运行的完整示例,大家可以根据自身策略需求,修改股票池、时间周期和字段即可快速上手。
风险提示:本文仅为量化技术教程分享,不构成任何投资建议。市场有风险,投资需谨慎。