问题描述
请问大家,我要获取财务的年报数据(不是季报), GETFINDATABYPERIOD 这个函数怎么使用,我没有看明白。文档里说:getfindatabyperiod('表格名称','字段名称',年份,季度,是否按报告期筛选); 注意:使用前需要先补充财务数据 表格名称: CAPITALSTRUCTURE(股本结构) PERSHAREINDEX(主要指标) ASHAREINCOME(利润表) ASHARECASHFLOW(现金流量表) ASHAREBALANCESHEET(资产负债表) 字段名称如:net_profit_incl_min_int_inc(净利润),参见 getfindata 年份: 正常年份,如:2023, 0 - 表示不指定数据时间,自动跟随 period 参数选择时间范围 季度: 1 - 一季报 2 - 二季报/半年报 3 - 三季报 4 - 四季报/年报 0 - 当前 bar 所在季度范围(未来函数) -1 - 当前 bar 所在季度范围的前一期 -n - 当前 bar 所在季度范围的前 n 期 是否按报告期筛选: 0: 返回指定季度数据, 如果无当期数据或当期数据未公告时, 返回最近一期数据 1: 返回指定季度数据, 如果无当期数据,则返回最近一期数据。
请问公司名填在哪里, 四季报和年报参数都是 4, 那究竟是季报还是年报?能不能给一个完整的示例?
解决方案
针对您在获取财务年报数据时的疑惑,这里为您做详细解答:\n\n### 1. 四季报和年报的区别是什么?\n在A股的财务报表体系中,四季报通常就等同于年报。一季报是1-3月数据,中报(二季报)是1-6月数据,三季报是1-9月数据,而四季报(年报)则是1-12月的全年累计数据。因此,参数填 4 获取的就是该年度的年报数据。\n\n### 2. 公司名(股票代码)填在哪里?\n您提到的 GETFINDATABYPERIOD 可能是 QMT 的公式/VBA接口或其他平台的函数。在 QMT Python API 中,获取财务数据的标准函数是 ContextInfo.get_financial_data。股票代码是通过 stockList(股票列表)或 code(单只股票代码)参数传入的。\n\n### 3. QMT Python API 获取年报数据完整示例\n在 QMT 中,使用 ContextInfo.get_financial_data 可以非常方便地获取财务数据。注意:使用前必须在QMT客户端的【数据管理】中下载补充好财务数据。\n\n以下是完整的 Python 策略代码示例:\n\npython\n#coding:gbk\n\ndef init(ContextInfo):\n # 初始化时可以设置股票池等\n pass\n\ndef handlebar(ContextInfo):\n # 确保只在最后一根K线执行,避免盘中频繁打印\n if not ContextInfo.is_last_bar():\n return\n\n # ==========================================\n # 用法1:获取多只股票在某段时间内的财务数据\n # ==========================================\n # 字段列表:取股本结构中的总股本,与利润表中的净利润\n fieldList = ['CAPITALSTRUCTURE.total_capital', 'ASHAREINCOME.net_profit_incl_min_int_inc']\n # 股票列表:浦发银行和平安银行\n stockList = ['600000.SH', '000001.SZ']\n # 设定时间范围\n startDate = '20220101'\n endDate = '20221231'\n \n # report_type='report_time' 表示按照报告期取数(即取该时间段对应的财报,如年报)\n # report_type='announce_time' 表示按照实际公告发布的日期取数\n df_data = ContextInfo.get_financial_data(fieldList, stockList, startDate, endDate, report_type='report_time')\n print("【用法1】获取的财务数据:")\n print(df_data)\n\n # ==========================================\n # 用法2:获取当前K线对应时间点的单只股票财务数据\n # ==========================================\n index = ContextInfo.barpos\n # 获取浦发银行(600000.SH)利润表的净利润\n # 参数依次为:表名, 字段名, 市场, 代码, 报告期类型, 当前K线索引\n net_profit = ContextInfo.get_financial_data('ASHAREINCOME', 'net_profit_incl_min_int_inc', 'SH', '600000', 'report_time', index)\n print("【用法2】浦发银行当前K线对应的净利润:", net_profit)\n\n\n### 核心参数解析:\n* report_type (时间类型):\n * 'report_time':按报告期取数。例如你想取2022年的年报,时间范围包含2022年12月31日即可取到该年度的四季报(年报)。\n * 'announce_time':按公告期取数。例如某公司2023年4月26日发布2022年年报,只有时间范围包含4月26日之后,才能取到该数据。\n* 表名与字段名:建议使用英文表名和字段名,如 ASHAREINCOME(利润表)、net_profit_incl_min_int_inc(净利润),具体字段可查阅 QMT API 文档中的《财务数据字段对照表》。