🚀 AI 一键生成 qmt 策略代码
立即体验

QMT 平台如何通过 get_trading_dates 接口获取股票历史交易日列表?

qmt | 发布时间: 2026/8/7
以下内容由 EasyQuant 生成。

问题描述

qmt 交易日历 API:使用 get_trading_dates 提取特定日期范围
如何通过 QMT 的 get_trading_dates 接口获取某只股票在两个日期之间的所有交易日列表?

解决方案

QMT 交易日历 API:使用 get_trading_dates 提取特定日期范围

在量化投资中,获取准确的交易日历是进行回测、因子计算和策略调度的基础。QMT(Quantitative Multi-Strategy Trading)平台提供了 ContextInfo.get_trading_dates() 接口,允许用户方便地获取指定个股、合约或指数在特定时间段内的交易日(K线时间戳)列表。


1. 接口定义与参数说明

接口用法

ContextInfo.get_trading_dates(stockcode, start_date, end_date, count, period)

参数解析

  • stockcode (string): 证券代码,例如 '600000.SH'(浦发银行)。若传入空字符串 '',则默认使用当前主图的品种代码。
  • start_date (string): 开始时间,格式为 'YYYYMMDD''YYYYMMDDHHMMSS'。可缺省,为空时不限制开始时间。
  • end_date (string): 结束时间,格式同上。可缺省,默认为当前 bar 的时间。
  • count (int): 获取的 K 线个数。必须大于 0。注意:当 start_date 不为空时,此参数失效;当 start_date 为空时,系统会获取 end_date 往前的 count 个交易日。
  • period (string): K 线周期类型,常用取值包括:
    • '1d': 日线(返回格式如 ['20230101', '20230102', ...]
    • '1m': 1分钟线(返回格式带具体时间,如 ['20230101093100', ...]
    • 其他可选值:'5m', '15m', '30m', '1h', '1w', '1mon' 等。

返回值

  • 返回一个包含时间字符串的 List

2. 核心代码示例

以下是一个完整的 Python 策略示例,展示了如何在 handlebar 中提取 平安银行 (000001.SZ)2023-01-012023-06-30 之间的所有日线交易日:

#coding:gbk

def init(ContextInfo):
    # 初始化设置
    print("策略初始化成功")

def handlebar(ContextInfo):
    # 仅在最后一根K线执行一次,避免重复打印
    if not ContextInfo.is_last_bar():
        return
        
    stock = '000001.SZ'  # 平安银行
    start = '20230101'
    end = '20230630'
    
    # 调用 get_trading_dates 接口获取日线交易日列表
    trading_days = ContextInfo.get_trading_dates(stock, start, end, 1, '1d')
    
    # 打印结果
    print(f"{stock} 在 {start} 至 {end} 期间的交易日数量为: {len(trading_days)}")
    print("前5个交易日:", trading_days[:5])
    print("后5个交易日:", trading_days[-5:])

3. 常见应用场景与注意事项

  1. 回测时间对齐:在多因子选股或跨品种套利策略中,可以使用该接口获取基准指数(如 '000300.SH')的交易日历,以确保所有标的数据在时间轴上完全对齐。
  2. 停牌处理:由于不同股票的停牌时间不同,传入具体股票代码(如 '000001.SZ')获取的交易日列表会自动剔除该股的停牌日。如果需要获取市场标准交易日,建议传入 '000300.SH'(沪深300指数)作为标的。
  3. 数据补充:在使用该接口前,请确保已通过 QMT 客户端的 “数据管理” 功能下载并补充了对应品种和周期的历史行情数据,否则可能返回空列表。