QMT/bigQMT 历史K线数据下载及查验教程
QMT/bigQMT 历史K线数据下载及查验教程
根据您提供的文档和截图,QMT下载历史K线数据主要有两种方式:客户端界面手动下载和 Python代码下载。以下是详细的操作教程:
方式一:客户端界面手动下载(补充数据)
这是最直观、最常用的方式,适合首次搭建数据环境或不定期补充特定数据。请结合您的图片进行操作:
第一步:打开数据管理界面
在QMT客户端左上角点击 “操作”,在下拉菜单中选择 “数据管理”
*在打开的弹窗中,选择 “补充数据” 标签页
第二步:配置数据选项
在“补充数据”界面左侧的“数据选项”区域,选择您需要下载的市场和品种:
- 展开对应的交易所(如 上海证券交易所(SHSE)、深圳证券交易所(SZSE) 等)。
- 勾选具体的证券品种(如 股票、基金、债券、指数 等)。
第三步:设置数据范围与周期
在界面右侧设置需要下载的数据时间跨度和周期:
- 数据范围:可选择“最近1天”、“最近1月”、“最近年”或“自定义时段”。
- 周期选项:下拉选择所需的数据周期,例如 “1分钟数据”、“5分钟数据”、“日线数据” 等。
- 如果需要指定特定品种,可以在右下角的输入框中输入(如 SH.600000)。
第四步:执行下载
设置完成后,点击右下角的 “补充” 按钮,系统即开始下载数据。
** 注意事项:**
- 全市场一天的1分钟数据大约需要 1GB以上 的硬盘空间,建议按需下载。
- 建议在收盘后执行下载,以避免占用交易时段资源。
- 如果只需要补充当天数据,还可以在“收盘清盘”标签中操作,但能补充的数据种类较少。
方式二:Python代码批量下载(download_history_data)
如果您需要批量下载大量股票的历史数据,可以通过内置的Python代码实现。由于内置的 download_history_data 接口只接受单个字符串代码,批量下载需要对股票列表和周期列表做双层循环。
核心代码逻辑示例(参考文档):
# coding:gbk
def init(C):
# ========== 配置参数 ==========
stock_list = ["000001.SZ", "600000.SH", "000002.SZ"]
start_date = "20260901"
end_date = "20260930"
periods = ["1m", "5m", "1d"]
print("=" * 50)
print("内置Python批量下载演示(循环调用 download_history_data)")
print("=" * 50)
total_tasks = len(stock_list) * len(periods)
done = 0
for stock in stock_list:
for period in periods:
done += 1
percent = done / total_tasks * 100
print(f"[{done}/{total_tasks}] ({percent:.0f}%) "
f"下载 {stock} | 周期={period}")
download_history_data(stock, period, start_date, end_date)
print("\n全部下载指令已发出。")
def handlebar(C):
if not C.is_last_bar():
return
stock_list = ["000001.SZ", "600000.SH", "000002.SZ"]
start_date = "20260901"
end_date = "20260930"
periods = ["1m", "5m", "1d"]
print("\n" + "=" * 50)
print("批量验证下载结果")
print("=" * 50)
for period in periods:
print(f"\n{'─' * 40}")
print(f"周期: {period}")
print(f"{'─' * 40}")
data = C.get_market_data_ex(
fields=["time", "open", "high", "low", "close", "volume"],
stock_code=stock_list,
period=period,
start_time=start_date,
end_time=end_date,
count=-1,
subscribe=False
)
for stock in stock_list:
if stock in data and data[stock] is not None and not data[stock].empty:
df = data[stock]
print(f" [{stock}] 条数={len(df):>6} "
f"起={df.index[0]} 止={df.index[-1]} "
f"收盘区间=[{df['close'].min():.2f}, "
f"{df['close'].max():.2f}]")
else:
print(f" [{stock}] 数据为空,请确认下载是否成功")
注意:验证环节使用的 get_market_data_ex 接口的 stock_code 参数支持列表,可以一次性读取多只标的的数据。
数据查验与存储位置
所有通过QMT下载的历史行情数据,都统一存放在QMT安装目录下的 datadir 文件夹中
1. datadir 文件夹内部结构(按市场分层)
- 第一层(按市场分类):如
SH(上交所)、SZ(深交所)、HK(港交所)等。 - 第二层(按数据周期分类):以数字命名的子文件夹,直接对应数据的周期类型:
0:分笔数据(Tick)60:1分钟K线300:5分钟K线86400:日线数据(86400秒 = 1天)- 其他周期如15分钟(900)、30分钟(1800)等也遵循同样逻辑。
** 文件路径示例:**
以您之前Demo中下载的上交所股票 600000.SH 的日线数据为例,其具体存储路径为:datadir\SH\86400\600000.DAT
2. 其他重要文件夹说明
- DivData:存储除权除息(分红送配)数据,采用LevelDB数据库格式。
- ED / EP / CC:系统元数据、客户端配置或缓存数据,公开资料中较少明确说明。
- increase:可能存储增量数据,用于记录每日新增行情以支持增量下载和更新。
- Industry:存储行业分类数据(如
IndustryData.txt)。 - Sector:存储板块分类数据(如
sectorlist.DAT)。 - Weight:存储权重数据(如指数成份股权重)。
3. 元数据与缓存文件
- quoteTimeInfo:存储行情时间相关元信息,确保K线时间戳准确性。
- TradeDateAndETFStockListCache:交易日历与ETF股票列表的缓存文件,用于加速策略加载。
** 补充说明:**
.DAT文件是QMT专用的二进制格式,无法直接用文本编辑器打开。如果需要在策略中读取或处理这些数据,强烈建议通过xtquant库的API进行,而非直接操作底层文件,以避免格式兼容性问题。
本文由 海星量化研究所 作者提供,转载请保留链接和署名!网址:http://qmt.hxquant.com/?id=86
1.本站原创文章,转载需注明文章作者来源。 2.如果文章内容涉及版权问题,请联系我们删除,向本站投稿文章可能会经我们编辑修改。 3.本站对信息准确性或完整性不作保证,亦不对因使用该等信息而引发或可能引发的损失承担任何责任。






