QMT/bigQMT 历史K线数据下载及查验教程

miniqmt 阅读:29 2026-10-08 14:54:25 评论:0

QMT/bigQMT 历史K线数据下载及查验教程

根据您提供的文档和截图,QMT下载历史K线数据主要有两种方式:客户端界面手动下载和 Python代码下载。以下是详细的操作教程:


方式一:客户端界面手动下载(补充数据)

这是最直观、最常用的方式,适合首次搭建数据环境或不定期补充特定数据。请结合您的图片进行操作:

第一步:打开数据管理界面

在QMT客户端左上角点击 “操作”,在下拉菜单中选择 “数据管理”
大QMT历史数据下载

*在打开的弹窗中,选择 “补充数据” 标签页
null

第二步:配置数据选项

在“补充数据”界面左侧的“数据选项”区域,选择您需要下载的市场和品种:

  1. 展开对应的交易所(如 上海证券交易所(SHSE)、深圳证券交易所(SZSE) 等)。
  2. 勾选具体的证券品种(如 股票、基金、债券、指数 等)。

第三步:设置数据范围与周期

在界面右侧设置需要下载的数据时间跨度和周期:

  1. 数据范围:可选择“最近1天”、“最近1月”、“最近年”或“自定义时段”。
  2. 周期选项:下拉选择所需的数据周期,例如 “1分钟数据”、“5分钟数据”、“日线数据” 等。
  3. 如果需要指定特定品种,可以在右下角的输入框中输入(如 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 文件夹中
null

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.本站对信息准确性或完整性不作保证,亦不对因使用该等信息而引发或可能引发的损失承担任何责任。

搜索
排行榜
关注我们

扫码开通QMT/ptrade