refactor: 统一ETF获取接口为单个DataFrame返回
重构说明: - TushareSource.fetch_etf(): 新增 adj 参数,统一接口 - 返回单个 DataFrame - df.attrs['nav']: 净值 DataFrame - df.attrs['premium']: 溢价率 Series - 移除冗余方法: - fetch_etf_with_nav() → 合并到 fetch_etf() - fetch_etf_adj() → 重命名为 _fetch_etf_hfq()(内部方法) - UniversalDataFetcher: 适配新接口 - fetch_etf_with_nav(): 从 df.attrs 提取元数据(兼容旧接口) - fetch_etf_adj(): 调用 fetch_etf(adj='hfq') - Flask: 更新注释说明 架构优势: - 单一接口:一个方法搞定所有 ETF 数据获取 - 数据一致:所有数据在一个 DataFrame 对象中 - 缓存友好:只需缓存一个 DataFrame - 扩展性强:新增数据直接添加到 attrs
This commit is contained in:
@@ -713,12 +713,12 @@ def get_ohlcv():
|
||||
result['asset_type'] = final_type.value # 使用最终类型
|
||||
result['adj'] = adj # 返回使用的 adj 参数
|
||||
|
||||
# 如果是中国 ETF,附加净值和溢价率数据(数据层已处理)
|
||||
# 如果是中国 ETF,附加净值和溢价率数据(数据层已处理,通过 df.attrs 传递)
|
||||
if final_type == AssetType.CHINA_ETF:
|
||||
try:
|
||||
f = get_fetcher()
|
||||
with f:
|
||||
# 调用 TushareSource 的完整方法
|
||||
# 调用统一接口,数据通过 DataFrame.attrs 传递
|
||||
price_df, nav_df, premium_series = f.fetch_etf_with_nav(code, start, end)
|
||||
|
||||
# 添加净值数据
|
||||
|
||||
Reference in New Issue
Block a user