“兵马未动,粮草先行”。在量化交易中,数据就是策略的”粮草”。数据模块是回测系统的基础保障,是非常重要的系统模块之一,所以本节尽量详细地给大家讲述。
10.1 数据获取的双重核心
数据中心提供了两种关键的数据获取机制,它们虽然都旨在从市场获取数据,但其设计理念、数据流向及最终应用场景存在显著差异:
- 数据下载:将数据作为独立的
.csv
文件显式存储,主要用于系统外部的量化研究。 - 数据补充:更新和完善MiniQMT系统内部的历史数据库,专门服务于内部回测功能。
10.2 数据下载:显式存储,赋能量化研究
“数据下载”功能的核心在于将金融数据以独立、可见、可直接操作的 .csv
文件格式提供给用户。这种设计使得数据变得”触手可及”,为后续的分析研究铺平了道路。
- 应用场景:
- 直接检视数据:在Excel或文本编辑器中检查数据质量、格式及具体数值。
- 利用外部工具分析:将数据导入Python(使用Pandas库)、R等进行复杂的统计建模或策略回测原型开发。
- 与其他系统集成:作为标准数据格式,方便导入其他研究平台。
- 复权处理: 该功能支持在下载时直接选择复权方式,允许用户获取基于特定复权逻辑(如前复权、后复权)的CSV数据。
csv数据文件
10.3 数据补充:无缝集成,驱动内部回测
与”数据下载”不同,”数据补充”功能的设计目标是服务于看海量化交易系统与MiniQMT本身。它的核心任务是更新和完善MiniQMT内部所依赖的历史数据库,为策略回测引擎提供坚实的数据基础。
💡 数据调用链路
换句话说,回测系统中使用到的数据,并非临时从网络下载,而是通过”数据补充”提前下载到本地的。更具体地说,”数据补充”调用的是xtquant的
download_history_data
函数将数据写入本地;而在回测过程中,策略通过get_market_data_ex
等函数高速地读取这些本地数据。
执行”数据补充”时,获取的数据并不会以独立文件的形式存储在用户指定的通用目录,而是直接写入MiniQMT系统自身的数据文件夹。该路径通常位于QMT安装目录下的 userdata_mini\datadir
中。数据的存储格式是内部优化的二进制格式(.dat
文件),目的是确保最高效地读取和利用。
是在QMT软件安装路径的userdata_mini\datadir当中可以看到:
datadir文件夹
其中包括了上交所、深交所股票、权重信息、成分股信息等等。打开“SH”文件夹可以看到有这几个子文件夹:
SH文件夹内数据
其中文件夹的数字代表的是秒,0文件夹中存的是tick数据,60存的是1m数据,300存的是5m数据,86400则是1d数据。再进一步打开则是DAT文件,这就是QMT的二进制数据了。
DAT数据
10.4 性能优化:多线程技术化解界面阻塞
无论是下载外部CSV文件还是补充内部数据,这两种操作均涉及大量的网络请求和磁盘I/O,属于典型的耗时任务。为解决早期版本中因此导致的界面长时间冻结(”未响应”)问题,当前数据模块采用了多线程优化策略。
数据下载时界面保持响应,且可随时停止
- 任务分离:将耗时的数据处理逻辑移至独立的后台工作线程执行。
- 异步通信:主界面线程仅负责启动和接收反馈。后台线程通过PyQt的信号将执行进度、结果或错误信息实时发送回主线程,安全地更新进度条、日志等UI元素。
- 中断控制:用户可在任务执行期间随时点击”停止”按钮,安全地终止后台操作。
这项优化显著提升了用户体验,确保了界面的流畅响应和任务的稳定性。
10.5 模块演进:从独立工具到集成组件
值得强调的是,当前看海量化交易系统的用户交互重心已是功能更全面的主回测系统界面。在此新架构下,数据模块转变为一个核心的功能组件,通过主界面工具栏上的”数据模块”按钮按需调用。
从主界面调用数据模块的流程演示
10.6 详细操作指南:数据获取(左侧面板)
本节将为您提供一份关于数据中心的、图文并茂的完整使用指南。
数据中心模块界面
10.6.1 设置数据存储路径

此路径仅对”数据下载”功能有效,指定生成的.csv文件存放在何处。您可以直接在输入框粘贴路径,或通过”浏览…”按钮选择。此设置会自动保存,下次无需重复设置。
💡 “数据补充”的路径
“数据补充”功能会直接将数据写入QMT的内部数据目录(通常是 userdata_mini\datadir),而不受此路径设置的影响。
10.6.2 选择股票范围

系统提供了多种方式来定义您想获取数据的股票范围:
- 预设板块/指数:直接勾选”沪深A股”、”沪深300成分股”等常用板块。
- 自选清单:系统提供了一个便捷的”自选清单”功能。勾选此项后,直接点击加粗带下划线的”自选清单“文字,即可用记事本打开 otheridx.csv 文件,仿照其中的格式(股票代码,股票名称)编辑和保存您的常用列表。
- 添加自定义列表:点击”添加自定义列表”按钮,可以从您的电脑中选择一个或多个已编辑好的股票列表文件。
- 预览与管理:所有选中的列表都会显示在下方的预览框中,可随时点击”清空列表”来重新选择。

CSV文件内容示例
10.6.3 配置数据参数
- 周期类型:支持
tick
、1m
、5m
和1d
四种。当您切换周期时,下方的”字段列表”会自动更新。 - 复权方式:此项仅对”数据下载”有效。您可以选择”前复权”、”后复权”等,以获取计算好的复权数据csv文件。执行”数据补充”时,系统始终写入不复权的原始行情。
- 字段选择:根据您的需求勾选要获取的数据字段。Tick周期和K线周期所支持的字段有所不同。
Tick周期可选字段
K线周期可选字段
10.6.4 设定时间范围
您可以通过日历控件选择一个起止日期,并可选择是获取”全天”数据,还是”指定时间段”(如09:30
–10:00
)的数据。当选择全天时,数据是从9:15集合竞价阶段开始下载。
10.6.5 执行任务与监控
- 启动任务:配置完成后,点击 下载数据 或 补充数据 按钮即可开始。
- 监控状态:
- 界面不阻塞:得益于多线程技术,无论是下载还是补充数据,界面都会保持流畅响应,不会出现”未响应”状态。
- 随时中断:任务开始后,按钮会变为红色的”停止”按钮,您可以随时点击它来安全地终止当前任务。
- 进度条:下方的进度条会实时反馈任务完成的百分比。
- 状态栏:界面最底部的状态栏会滚动显示详细的日志信息,如”正在下载 xxx 的数据…”,或报告下载错误。
💡 下载文件命名规则
文件命名规则:
– 存储的文件名格式: “{股票代码}{周期类型}{起始日期}{结束日期}{时间段}_{复权方式}.csv”
– 示例1: “000001.SZ_tick_20240101_20240430_all_none.csv”
– 股票代码: 000001.SZ
– 周期类型: tick
– 起始日期: 20240101
– 结束日期: 20240430
– 时间段: all (表示全部时间段)
– 复权方式: none (表示不复权)
– 示例2: “000001.SZ_1d_20240101_20240430_all_front.csv”
– 复权方式: front (表示前复权)
– 如果指定了具体的时间段,时间段部分将替换为 “HH_MM-HH_MM” 的格式
– 示例: “000001.SZ_1m_20240101_20240430_09_30-11_30_none.csv”
– 时间段: 09_30-11_30 (表示 09:30 到 11:30 的时间段)
– 复权方式有以下几种:
– ‘none’: 不复权,使用原始价格
– ‘front’: 前复权,基于最新价格进行前复权计算
– ‘back’: 后复权,基于首日价格进行后复权计算
– ‘front_ratio’: 等比前复权,基于最新价格进行等比前复权计算
– ‘back_ratio’: 等比后复权,基于首日价格进行等比后复权计算
10.7 详细操作指南:数据清洗(右侧面板)
数据清洗模块可以说是和历史数据下载模块是一体的,它用于修正您已下载到本地的.csv
文件。
10.7.1 待清洗的文件夹选择
此路径会自动与左侧”数据下载”模块的路径相关联,同时也可以手动修改,以增加该模块使用的便捷性和灵活性。
10.7.2 选择清洗操作
此处按需勾选需要执行的清洗任务。
⚠️ 注意:
- “移除异常值”应该慎重选择,因为它可能会剔除一些极端但有效的行情。
- 点击”开始清洗”后,程序会直接在原数据上进行修改,即清洗后的数据将覆盖原数据。请务必提前备份重要数据。
10.7.3 清洗结果日志
程序会生成详细的清洗日志,以便用户确认清理的数据是否符合预期。

日志内容包括:
- 处理文件的总数量
- 每个文件的具体处理情况(如缺失值填充数量、重复数据删除数量等)
- 被删除数据的具体内容,以便核对
- 清洗完成的时间戳
如果想保存所有日志信息,可以点击”保存清洗日志”按钮,将报告导出为.txt
文件。

10.8 详细操作指南:数据可视化工具
可视化模块主要为了做两件事:
第一,确认一下下载的数据的总体概况,比如总共有多少只股票的数据、占用的空间等基本信息。
第二,任意选取其中的某一只股票,绘制其数据文件中的各类数据的图线,也就是数据的可视化。
10.8.1 可视化模块与主界面的衔接
该功能作为工具模块内置于平台中,通过数据中心顶部的工具栏调用。点击第一个图标,即可弹出此可视化界面。

特别值得一提的是,该模块实现了与主界面的智能联动。它会自动继承主界面当前的数据文件夹路径,这意味着用户在下载完数据后可以直接点击图标进行分析,无需重复设置路径。当然,用户也可以通过界面上的”浏览…”按钮随时切换到其他数据文件夹。
10.8.2 文件信息统计
它能自动扫描文件夹,解析每个文件名,并提供全面的数据概览,帮助快速核实数据完整性。

统计信息包括:
- 基础信息:股票总数、文件总大小
- 市场分布:深市、沪市、北交所的股票数量统计
- 数据特征:数据周期类型(tick、1m、5m、1d等)
- 时间范围:数据的起止日期
这些信息直观地展示在界面右上角,帮助用户快速了解数据集的基本特征。这个功能特别适合在批量下载数据后使用,可以帮助快速核实数据的完整性。
10.8.3 智能可视化展示
系统会根据数据特征自动调整显示模式:
- 股票选择:在”股票”下拉菜单中,系统会自动将股票代码解析为股票名称。
- 日期选择:如果数据是tick、1m或5m级别,会自动生成一个日期选择菜单。
- 智能降采样:当数据量过大时,系统会自动降采样以保证图表响应流畅。

日线数据展示
10.8.4 交互功能与用户体验
为了提供更好的数据分析体验,系统实现了丰富的交互功能:
- 通过鼠标框选来放大查看特定时间段的数据。
- 右键点击可快速重置视图。
- 鼠标悬停会显示该点的详细数据信息。
- 点击图例可隐藏/显示对应数据曲线。

鼠标悬停显示详细数据

窗口局部缩放
这个可视化模块虽然看似简单,但在实现过程中考虑了很多实用性的细节。它既可以用来验证数据完整性,也能支持初步的技术分析。