From c79cde5d7fba88410190952d43a70c4d69f93291 Mon Sep 17 00:00:00 2001 From: aszerW Date: Mon, 25 May 2026 20:25:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(tushare):=20=E4=BF=AE=E5=A4=8DETF=E5=A4=8D?= =?UTF-8?q?=E6=9D=83qfq=E6=94=AF=E6=8C=81=E5=92=8C=E6=BA=A2=E4=BB=B7?= =?UTF-8?q?=E7=8E=87=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除fetch()方法中ETF复权路由的qfq硬编码限制 - 修改ETF复权调用从fetch_etf_adj改为fetch_etf - 确保qfq/hfq模式也能获取净值和溢价率数据 - 溢价率始终基于原始价格计算,不受复权影响 修复前: - qfq返回404错误 - hfq无溢价率数据 修复后: - raw/qfq/hfq三种模式均正常 - 所有模式都返回溢价率数据 - 本地测试全部通过 --- datasource/tushare_source.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/datasource/tushare_source.py b/datasource/tushare_source.py index 20f5b0d..df42d4c 100644 --- a/datasource/tushare_source.py +++ b/datasource/tushare_source.py @@ -300,12 +300,9 @@ class TushareSource: # A股股票复权 if self.is_china_stock(code): return self.fetch_stock_adj(code, start_date, end_date, adj) - # A股 ETF 仅支持 hfq + # A股 ETF 支持 qfq 和 hfq(使用 fetch_etf 包含净值和溢价率) elif self._is_etf_code(code): - if adj == 'hfq': - return self.fetch_etf_adj(code, start_date, end_date) - else: - raise ValueError(f"ETF 仅支持 adj='hfq'(后复权),当前: {adj}") + return self.fetch_etf(code, start_date, end_date, adj) else: # 指数/期货不支持复权 raise ValueError(f"指数/期货不支持复权,adj='{adj}' 仅适用于股票/ETF")