当前位置: 首页 > news >正文

MiniQMT 量化教程:历史数据下载全解析(上):核心概念与基础用法

在使用 MiniQMT 做量化策略开发时,历史行情数据是回测与分析的基础。很多刚接触 MiniQMT 的朋友经常会混淆miniQMTxtquantxtdata三者的关系,也搞不清下载数据和查询数据的区别。本文就带大家系统梳理 MiniQMT 中历史数据的下载方法,讲透核心概念与基础实操。

一、先理清关系:MiniQMT、XtQuant 与 xtdata

很多新手入门的第一个困惑,就是这三个名词到底是什么关系,其实它们是层层嵌套的「终端 - 接口 - 模块」关系:

  1. miniQMT:量化交易终端软件,运行在本地作为服务端,负责对接交易所、接收并存储行情数据,同时提供数据下载与交易接口能力。
  2. XtQuant:miniQMT 的 Python 接口库,是 Python 程序和 miniQMT 本地服务之间的通信桥梁,通过 TCP 连接交互,内部包含两大核心模块:行情模块xtdata和交易模块xttrader
  3. xtdata:XtQuant 中专职行情数据的模块,提供各类行情数据的 API 接口,本质是向 miniQMT 发送数据请求并处理返回结果,同时支持历史数据查询和实时行情订阅。

简单理解:miniQMT 是后台数据源,XtQuant 是 Python 对接工具,xtdata 是工具里专门拿行情数据的功能包。

二、xtdata 模块核心功能全景

xtdata 是 MiniQMT 体系里的行情数据核心,覆盖了从行情到基本面、从股票到衍生品的全品类数据能力:

  • 历史行情数据:支持日线、分钟线、周线等多周期 K 线,以及分笔成交 Tick 数据,同时提供前复权、后复权等多种复权方式。
  • 实时行情订阅:支持单标的单周期订阅、全市场 Tick 订阅两种模式;额外支持 Level2 深度行情获取(需单独开通权限),满足高频交易数据需求。
  • 基本面与基础数据:提供资产负债表、利润表、现金流量表等完整财务报表及核心财务指标,同时支持股票列表、交易日历、除权除息等基础信息查询。
  • 指数与板块数据:支持指数成分股、成分股权重、指数行情获取,覆盖行业分类、概念板块、地域板块等多维度板块数据。
  • 基金与衍生品数据:支持 ETF 申赎清单、成分股、净值数据;同时提供期货主力合约、期权链、商品期权等衍生品数据查询。

三、历史数据获取的底层逻辑:缓存 + 查询两步走

xtdata 获取历史数据的核心逻辑分为两步,这是很多新手容易踩坑的地方:

  1. 第一步:缓存历史数据调用下载函数从服务器拉取数据,缓存到 miniQMT 安装目录下的userdata_mini文件夹中,数据为二进制格式,无法直接读取和处理。
  2. 第二步:查询历史数据调用查询函数从本地缓存中读取数据,转化为可处理的格式(如 DataFrame),支持多标的、多字段、多周期读取,也可设置复权方式。

注意:必须先执行下载缓存,才能成功查询到历史数据;同时由于接口迭代,目前存在多组功能相近但细节有别的下载 / 查询函数,需要根据需求选择。

四、步骤一:缓存历史数据(下载到本地)

数据缓存阶段,核心有两个函数:download_history_data()download_history_data2(),执行完成后数据就会持久化存储到本地。

两者的核心差异如下:

函数支持标的数量执行方式核心特点
download_history_data单只股票 / 标的同步执行用法简单,适合单标的少量数据下载
download_history_data2批量多标的异步执行可监控下载进度,适合多标的、长周期批量下载

两个函数均支持增量下载(设置incrementally=True)和全量下载,日常维护数据时用增量下载可以大幅提升效率。

五、步骤二:查询历史数据(读取本地数据)

数据缓存到本地后,需要通过查询函数读取为可分析的数据,常用的查询函数有三个:

  • get_market_data():基础查询函数,支持指定标的、周期、时间范围、字段和复权方式。
  • get_market_data_ex():增强版查询函数,返回格式更丰富,适配更多进阶参数。
  • get_local_data():纯本地数据读取,直接从本地缓存拉取,不触发服务器请求。

六、实操案例:单只股票日线数据下载与读取

下面以平安银行(000001.SZ)为例,演示「下载 - 查询」的完整基础流程,代码可直接复制运行(需先启动 MiniQMT 并安装 xtquant)。

from xtquant import xtdata # ====================== # 1. 下载并缓存历史数据 # ====================== xtdata.download_history_data( stock_code="000001.SZ", # 股票代码,格式:代码.交易所 period="1d", # 数据周期:1d=日线 start_time="20240101", # 起始日期 end_time="20240301" # 结束日期 ) # ====================== # 2. 查询本地已缓存的数据 # ====================== data = xtdata.get_market_data( field_list=["time", "close"], # 需要获取的字段:时间、收盘价 stock_list=["000001.SZ"], # 股票代码列表 period="1d", # 数据周期,与下载保持一致 start_time="20240101", # 起始日期 end_time="20240301" # 结束日期 ) # ====================== # 3. 打印结果 # ====================== print("平安银行日线收盘价数据:") print(data["close"])

七、总结与下篇预告

本文梳理了 MiniQMT 中历史数据获取的核心体系,重点讲解了「下载缓存 + 本地查询」的两步逻辑,以及基础函数的用法和单标的实操。

在下篇内容中,我会继续讲解批量下载函数download_history_data2的用法、多标的批量数据获取实操,以及不同查询函数的适用场景和进阶参数,帮助大家高效搭建本地行情数据库。


本文为「MiniQMT 量化入门」系列文章,后续会持续更新数据处理、策略回测、实盘交易相关内容,欢迎关注专栏一起交流。投资有风险入市需谨慎,本文只做教学不做投资建议。

http://www.jsqmd.com/news/1115723/

相关文章:

  • 工业4-20mA电流环技术及DAC161S997应用解析
  • 如何轻松将2D图片转换为3D打印模型:ImageToSTL完整指南
  • 企业官网开发工具评测:哪款更适合你的团队?
  • LP5812与PIC24FJ128GA310实现RGB LED灯光控制方案
  • WD5030K, 7V~28V,极限耐压 32V,内置 38V 高压过压保护,电流12A
  • IIM-42652与PIC18F4685实现6DoF运动追踪方案
  • 4-20mA电流环技术与XTR116在工业自动化中的应用
  • DeepSeek-V2企业级任务实测:结构化输出如何重构AI落地链路
  • PCF8591与PIC18LF26K22的嵌入式信号处理系统设计
  • STM32与IIM-42652实现6DoF运动追踪方案
  • 西门子光纤连接板模块 A1A461D85.00
  • OpenEuler Sec-Select:揭秘基于鲲鹏/昇腾的机密计算安全解决方案
  • 2026 实战 GEO 与 SEO 的核心差异:面向 AI 搜索的下一代优化体系全解析
  • Java毕业设计-面向动漫爱好者的互动分享论坛平台的设计与实现 基于 SpringBoot 的漫画收藏与交流讨论系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 7.1 PyTorch Transformer模块详解
  • 拯救消失的文字:novel-downloader如何成为数字阅读的守护者
  • 丙午年五月十九忙理忧愁绪
  • 4-20mA电流环技术与DAC161S997工业应用解析
  • MoA:Mixture-of-Agents Enhances Large Language ModelCapabilities混合智能体(Mixture-of-Agents)提升大语言模型能力
  • 如何快速上手openEuler/seccom-tee?零基础入门指南与核心功能解析
  • 机器学习工程师必备的12个高信噪比技术博客
  • 如何在3分钟内解锁Twitch订阅限制:终极免费观看指南
  • STM32与PCF8591的硬件协同设计与信号处理实战
  • PowerAPI部署实战:从编译到运行的完整流程
  • 新的伙伴,新的能量,新的故事,正式开启。
  • 如何利用openEuler Compiler-docs中的反馈优化技术提升数据库性能:完整指南
  • Navicat试用期重置:3种方法实现Mac版永久免费使用
  • bash shell
  • MC6470与TM4C1294NCZAD在运动控制中的硬件集成与算法实现
  • BLDC电机FOC控制方案与dsPIC30F实现