🚀 AI 一键生成 qmt 策略代码

QMT 平台 get_financial_data 获取财务数据为空怎么办?

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

问题描述

get_financial_data为什么获取的数据都是空

get_financial_data 为什么获取的数据都是空,应该怎么解决呢

解决方案

在 QMT 平台中使用 get_financial_data 函数获取财务数据时,如果返回的数据都是空值,通常是由以下几个原因导致的。请按照以下步骤逐一排查并解决:

1. 最常见原因:未补充本地财务数据

原因分析:QMT 的财务数据接口(get_financial_data)是通过读取下载到本地的数据来进行取数的。如果你的客户端本地没有相应的财务数据,接口就会返回空值。
解决方法
在使用该函数前,必须先通过 QMT 客户端补充数据。
操作路径:点击客户端菜单栏的 【数据管理】 -> 【补充数据】,勾选你需要的市场和财务数据,点击下载并等待补充完成。

2. 字段名或表名拼写错误

原因分析:QMT 对财务数据的表名和字段名有严格的规范,必须使用官方文档中指定的英文表名和英文字段名。
解决方法
检查你传入的 fieldListtabname/colname 是否正确。例如,获取资产负债表中的固定资产和利润表中的净利润,正确的格式是:
['ASHAREBALANCESHEET.fix_assets', 'ASHAREINCOME.net_profit_incl_min_int_inc']
(注:部分旧版支持中文如 '利润表.净利润',但强烈建议使用全英文字段以保证兼容性)

3. 股票代码或时间格式不规范

原因分析:传入的股票代码后缀不正确,或者时间格式不符合要求。
解决方法

  • 股票代码:必须是 stockcode.market 的形式,例如平安银行应写为 '000001.SZ',浦发银行应写为 '600000.SH'
  • 时间格式startDateendDate 必须是类似 'YYYYMMDD' 的字符串格式,例如 '20171209'

4. 缺少 Pandas 依赖库

原因分析get_financial_data 函数在返回多股或多期数据时,底层依赖 pandas 库来构建 SeriesDataFramePanel 数据结构。
解决方法
确保你的 Python 环境中已经安装了 pandas 库(QMT 自带的 Python 环境默认已安装,如果是自定义环境请执行 pip install pandas)。

5. 报表时间类型(report_type)选择不当

原因分析report_type 参数可选 'announce_time'(公告期)或 'report_time'(报告期)。如果指定的时间段内没有对应的财报发布,也会返回空。
解决方法
根据策略需求合理选择 report_type。例如,如果想获取某天能看到的最新财报数据,建议使用默认的 'announce_time'


正确的代码示例

在确保已经下载了本地财务数据后,你可以使用以下标准代码进行测试:

#coding:gbk
def init(ContextInfo):
    pass

def handlebar(ContextInfo):
    # 取股本结构中的总股本,与利润表中的净利润
    fieldList = ['CAPITALSTRUCTURE.total_capital', 'ASHAREINCOME.net_profit_incl_min_int_inc']
    stockList = ['600000.SH', '000001.SZ']
    startDate = '20201201'
    endDate = '20201231'
    
    # 获取指定时间段浦发银行和平安银行的总股本及利润表的净利润
    df = ContextInfo.get_financial_data(fieldList, stockList, startDate, endDate, report_type='announce_time')
    print(df)

总结:遇到 get_financial_data 返回空值,90% 以上的情况是因为没有在客户端的【数据管理】中下载财务数据。请先执行数据补充操作,然后再运行策略。