fix: ETF始终返回净值和溢价率数据(与adj无关)

修改原因:
- 净值是客观数据,不存在复权概念
- 溢价率 = (原始价格 - 净值) / 净值,与用户请求的 adj 无关
- 用户请求 adj='hfq' 时也需要查看溢价率数据

变更内容:
- 移除 'adj == raw' 限制条件
- 所有 ETF 请求都附加净值和溢价率数据
- 更新 API 文档说明
- 溢价率始终基于原始价格计算
This commit is contained in:
2026-05-23 22:21:50 +08:00
parent 3697c9d38b
commit 50b5f09d84

View File

@@ -610,6 +610,11 @@ def get_ohlcv():
- 15m: 15分钟线
- 1m: 分钟线
nocache: 是否跳过缓存 (optional, 默认false)
特殊说明:
- 中国ETF (china_etf) 始终返回净值和溢价率数据
- 净值和溢价率为客观数据,与 adj 参数无关
- 溢价率始终基于原始价格计算,不受复权影响
"""
code = request.args.get('code', '').strip()
start = request.args.get('start', '').strip()
@@ -708,11 +713,12 @@ def get_ohlcv():
result['asset_type'] = final_type.value # 使用最终类型
result['adj'] = adj # 返回使用的 adj 参数
# 如果是中国 ETF 且 adj=raw自动附加净值和溢价率数据
if final_type == AssetType.CHINA_ETF and adj == 'raw':
# 如果是中国 ETF,始终附加净值和溢价率数据(与 adj 无关)
if final_type == AssetType.CHINA_ETF:
try:
f = get_fetcher()
with f:
# 注意:始终使用原始价格计算溢价率(净值无复权概念)
price_df, nav_df, premium_series = f.fetch_etf_with_nav(code, start, end)
# 添加净值数据