QMT 量化交易全攻略:一文搞懂所有数据下载方式(代码 + 客户端双教程)
本文全面解析 QMT 量化交易系统的数据体系,详细介绍代码自动下载和客户端批量下载两种历史数据获取方式,明确基础周期与合成周期的底层逻辑,分享数据管理的最佳实践,帮助量化交易者高效搭建本地行情数据库,解决数据不全、下载慢、存储混乱等常见问题。
一、QMT 支持的数据范围全览
QMT 作为专业的本地量化交易客户端,提供覆盖全市场、多周期的完整行情数据,所有数据均存储在本地设备,支持离线回测和实时调用。
1.1 支持的数据周期
QMT 的行情数据分为基础存储周期和合成计算周期两大类:
- 基础周期(原生存储,精度最高):tick(逐笔)、1 分钟、5 分钟、日线
- 合成周期(由基础周期自动计算生成):15 分钟、30 分钟、60 分钟(由 5 分钟线合成);周线、月线、年线(由日线合成)
⚠️ 重要提示:合成周期的数据精度取决于其对应的基础周期,如需高频策略回测,建议直接下载对应基础周期的原始数据。
1.2 支持的数据品种
覆盖国内主流金融市场的全品类交易品种,具体如下:
| 数据类别 | 包含内容 |
|---|---|
| 股票 | 2005 年至今沪深 A 股、北交所 A 股的行情、财务及基本面数据 |
| 指数 | 沪深市场全部指数的行情数据 |
| 行业概念 | 所有行业板块、概念板块的成分股及行情数据 |
| 场内基金 | ETF、LOF、分级基金、货币基金的完整行情与净值数据 |
| 期货 | 中金所、上期所、郑商所、大商所、能源中心的所有期货合约数据 |
| 期权 | 股票期权、商品期权的合约资料与行情数据 |
| 债券 | 债券基本信息、国债逆回购、可转债等债券类数据 |
二、历史数据下载方式一:代码自动下载
QMT 提供 API 接口支持通过代码自动下载历史数据,适合需要动态补充数据、批量处理多品种数据的场景,核心函数为get_market_data_ex。
2.1 核心函数说明
get_market_data_ex是 QMT 获取历史行情数据的通用函数,支持所有周期和品种的数据下载,调用后数据会自动保存至本地数据库,后续调用可直接读取本地缓存。
基本调用格式
# 导入QMT核心库 from xtquant import xtdata # 下载历史数据 xtdata.download_history_data( stock_code="标的代码", # 格式:市场_代码,例如SH_600000、SZ_000001 period="数据周期", # 可选:tick、1m、5m、1d、15m、30m、60m、1w、1mon start_time="开始时间", # 格式:YYYYMMDD,例如20200101 end_time="结束时间" # 格式:YYYYMMDD,为空则默认下载至最新交易日 ) # 获取已下载的数据 data = xtdata.get_market_data_ex( field_list=["open", "high", "low", "close", "amount"], # 需要获取的字段 stock_list=["SH_600000"], period="1d", start_time="20200101", end_time="20250601" )2.2 常用数据字段说明
通过get_market_data_ex可获取 11 个数据对象,其中最常用的字段如下:
- 通用 K 线字段:
open(开盘价)、high(最高价)、low(最低价)、close(收盘价)、amount(成交额)、volume(成交量) - Tick 数据专属字段:
lastprice(最新成交价)、bidprice(买一价)、askprice(卖一价)、bidvolume(买一量)、askvolume(卖一量)
2.3 代码下载适用场景
- 临时补充单品种、特定时间段的数据
- 策略初始化时自动检查并下载缺失数据
- 批量下载多个品种的指定周期数据
三、历史数据下载方式二:客户端批量下载
对于需要下载大量历史数据(如全市场多年数据)的场景,客户端批量下载是更高效的选择,支持可视化选择数据范围和品种,下载速度更快且稳定性更高。
3.1 详细操作步骤
- 打开 QMT 客户端,点击顶部菜单栏的数据选项
- 在下拉菜单中选择数据管理,进入数据下载界面
- 配置下载参数:
- 数据范围:可选择最近 1 周、最近 1 月、全部或自定义时间段
- 周期选项:勾选需要下载的 K 线周期(日线、1 分钟、5 分钟等)
- 品种选择:勾选对应的市场(上交所、深交所、中金所等),也可通过 "补充指定品种" 单独添加个股
- 点击补充按钮,开始批量下载数据
- 下载完成后,可通过收盘清盘功能更新当日盘后数据
3.2 客户端下载注意事项
- 硬盘空间准备:全市场 1 天的 1 分钟数据约 1GB,若需下载多年全市场数据,建议预留足够的硬盘空间(例如 10 年全市场 1 分钟数据约 3TB)
- 避免重复下载:QMT 会自动检测本地已存在的数据,重复下载不会占用额外存储空间
- 数据清理:对于不再需要的历史数据,可通过清理数据功能一键删除,释放硬盘空间
- 每日数据更新:每个交易日收盘后,建议执行收盘清盘操作,自动补充当日的所有行情数据
3.3 高级功能:自定义数据导入
QMT 支持导入第三方数据,可将本地已有的其他数据源导入至 QMT 数据库中统一管理,例如:
- 北交所早期历史数据
- 港美股行情数据
- 自定义的基本面数据、因子数据
导入操作:在数据管理界面点击导入数据,选择对应的数据文件和导入格式即可。
四、数据下载最佳实践
- 批量历史数据优先用客户端:下载超过 1 个月的全市场数据时,客户端批量下载的速度远快于代码下载,且不易出现中断
- 每日盘后自动更新:设置每日收盘后自动执行收盘清盘,确保本地数据始终保持最新
- 按需下载,避免冗余:根据策略实际需求下载对应周期和品种的数据,无需下载全市场所有周期的数据
- 盘中实时数据用订阅机制:当日实时数据不要使用
get_market_data_ex拉取,应使用subscribe_quote订阅机制获取,速度更快且延迟更低
五、总结与合规提示
5.1 核心要点总结
- QMT 提供 tick、分钟、日线等多周期数据,覆盖股票、基金、期货、期权等全品类品种
- 历史数据下载有代码自动下载和客户端批量下载两种方式,分别适用于不同场景
- 数据分为基础周期和合成周期,合成周期由基础周期自动生成,高频策略需使用原始基础周期数据
- 客户端下载支持批量操作和数据管理,是大量历史数据下载的首选方式
5.2 合规与风险提示
- 本文所提供的代码和操作教程仅作学习交流使用,不构成任何投资建议,据此交易风险自担
- 量化交易存在较高市场风险,实盘交易前请务必进行充分的历史回测和模拟盘验证
- 数据下载和使用需遵守相关法律法规及证券公司的用户协议
