🚀 AI 一键生成 qmt 策略代码

QMT 平台 get_financial_data 获取 PershareIndex 表数据为空怎么办?

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

问题描述

PershareIndex表取不到数据

financial_data = xtdata.get_financial_data(ashare_list, table_list=['PershareIndex'], start_time='', end_time='', report_type='report_time')

代码如上。
取到的数据全是空的,但是其他财务表都有数据,我确认已经全部下载到本地了


'603888.SH': {'PershareIndex': Empty DataFrame
Columns: []
Index: []},
'603122.SH': {'PershareIndex': Empty DataFrame
Columns: []
Index: []},
'688252.SH': {'PershareIndex': Empty DataFrame
Columns: []
Index: []},
'603156.SH': {'PershareIndex': Empty DataFrame
Columns: []
Index: []},
'600246.SH': {'PershareIndex': Empty DataFrame
Columns: []
Index: []},
'603860.SH': {'PershareIndex': Empty DataFrame
Columns: []
Index: []},
'605287.SH': {'PershareIndex': Empty DataFrame
Columns: []
Index: []},
'600232.SH': {'PershareIndex': Empty DataFrame
Columns: []

解决方案

在 QMT 平台中获取财务数据时,如果遇到 PershareIndex 表返回 Empty DataFrame 而其他表正常的情况,通常是因为表名的大小写不正确导致的。

问题原因

QMT 的财务数据表名是严格区分大小写的。根据 QMT 官方 API 文档,主要指标表的标准英文表名应为全大写:PERSHAREINDEX。您在代码中使用了驼峰命名 PershareIndex,导致底层接口无法正确匹配到本地数据库中的表,从而返回空数据。

解决方法

请将 table_list 参数中的表名改为全大写 PERSHAREINDEX

正确的代码示例:

# 将 'PershareIndex' 修改为全大写 'PERSHAREINDEX'
financial_data = xtdata.get_financial_data(
    ashare_list, 
    table_list=['PERSHAREINDEX'], 
    start_time='', 
    end_time='',   
    report_type='report_time'
)

print(financial_data)

附:QMT 常用财务数据表名对照(必须全大写)

为了避免类似问题,请在调用时参考以下标准表名:

  • 资产负债表ASHAREBALANCESHEET
  • 利润表ASHAREINCOME
  • 现金流量表ASHARECASHFLOW
  • 股本表CAPITALSTRUCTURE
  • 主要指标PERSHAREINDEX

其他排查建议

如果修改为全大写后仍然取不到数据,请检查以下几点:

  1. 数据补充是否完整:在 QMT 终端的【数据管理】-【补充数据】中,确保勾选了“财务数据”并完成了下载。
  2. 字段名是否正确:如果您使用了 field_list 参数指定字段,请确保字段名与文档一致(如 s_fa_eps_basic 代表基本每股收益)。
  3. 时间范围:如果指定了 start_timeend_time,请确保该时间段内目标股票确实发布了财报。