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

QMT 平台如何获取股票历史除权除息日及复权因子?(附 Python 源码)

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

问题描述

qmt 自定义复权计算:利用 get_divid_factors 提取历史除权除息日与因子
如何使用qmt接口获取股票的历史除权除息日期和复权因子字典?

解决方案

QMT 平台获取股票历史除权除息日及复权因子指南

在量化交易中,准确的价格复权对于技术指标计算和回测至关重要。QMT 平台提供了 ContextInfo.get_divid_factors 接口,允许投资者直接获取指定股票的历史除权除息日与复权因子的映射字典。通过该接口,您可以轻松实现自定义的复权逻辑。


1. 接口方法介绍

ContextInfo.get_divid_factors()

  • 方法释义:获取指定股票的除权除息日和复权因子。
  • 调用用法ContextInfo.get_divid_factors(stock_code)
  • 参数说明
    • stock_code:字符串类型,必须是 股票代码.市场代码 形式,例如 '600000.SH'
  • 返回值
    • 返回一个字典(dict),其键(Key)为除权除息日的时间戳(毫秒),值(Value)为对应的复权因子。

2. 完整 Python 策略代码示例

以下是一个完整的 QMT 策略示例,展示了如何获取浦发银行(600000.SH)的历史除权除息数据,并将其时间戳转换为可读的日期格式:

#coding:gbk

def init(ContextInfo):
    # 设定基础股票池
    ContextInfo.set_universe(['600000.SH'])

def handlebar(ContextInfo):
    # 仅在最后一根 K 线上执行,避免历史 K 线重复打印
    if not ContextInfo.is_last_bar():
        return
        
    stock = '600000.SH'
    
    # 获取除权除息日和复权因子映射字典
    divid_factors = ContextInfo.get_divid_factors(stock)
    
    print(f"--- 股票 {stock} 历史除权除息数据 ---")
    if divid_factors:
        for timetag, factor in divid_factors.items():
            # 将毫秒级时间戳转换为可读的日期格式
            date_str = timetag_to_datetime(timetag, '%Y-%m-%d')
            print(f"除权除息日: {date_str} | 复权因子: {factor}")
    else:
        print("未获取到除权除息数据,请检查本地历史数据是否补充完整。")

3. 注意事项

  1. 数据补充:该接口依赖本地的历史行情数据。在使用前,请务必通过 QMT 客户端的 “数据管理” 功能,补充对应股票的历史数据及除权除息信息。
  2. 时间戳转换:接口返回的 Key 是毫秒级时间戳,推荐配合 QMT 内置的 timetag_to_datetime(timetag, format) 函数转换为标准日期格式(如 '%Y-%m-%d'),以便于阅读和后续计算。