fix: fund-flow 路由补充东方财富 kline 成交额
腾讯 fqkline 仅返回 6 个字段(date/open/close/high/low/volume), 不含成交额,导致 fund-flow 路由补充的 turnover 始终为 0。 在路由层额外调用 eastmoney.fetch_kline_history 获取成交额映射, 优先使用东方财富的成交额数据补充,腾讯 kline_map 作为兜底。 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+10
-2
@@ -201,12 +201,20 @@ async def stock_fund_flow(
|
|||||||
if not data:
|
if not data:
|
||||||
raise HTTPException(status_code=404, detail="未获取到资金流向数据")
|
raise HTTPException(status_code=404, detail="未获取到资金流向数据")
|
||||||
|
|
||||||
# 从腾讯 K 线补充成交额/收盘价/涨跌幅
|
# 从腾讯 K 线补充收盘价/涨跌幅
|
||||||
kline_map = await tencent.fetch_kline_map(code, days)
|
kline_map = await tencent.fetch_kline_map(code, days)
|
||||||
|
# 从东方财富 K 线补充成交额(腾讯 fqkline 不含成交额字段)
|
||||||
|
em_klines = await eastmoney.fetch_kline_history(code, days)
|
||||||
|
em_kline_map = {}
|
||||||
|
if em_klines:
|
||||||
|
for k in em_klines:
|
||||||
|
if k.get("turnover"):
|
||||||
|
em_kline_map[k["date"]] = k["turnover"]
|
||||||
for d in data:
|
for d in data:
|
||||||
ki = kline_map.get(d["date"], {})
|
ki = kline_map.get(d["date"], {})
|
||||||
if d.get("turnover", 0) == 0:
|
if d.get("turnover", 0) == 0:
|
||||||
d["turnover"] = ki.get("turnover", 0)
|
# 优先从东方财富 kline 拿成交额,其次腾讯
|
||||||
|
d["turnover"] = em_kline_map.get(d["date"], ki.get("turnover", 0))
|
||||||
if d.get("closePrice", 0) == 0:
|
if d.get("closePrice", 0) == 0:
|
||||||
d["closePrice"] = ki.get("close", 0)
|
d["closePrice"] = ki.get("close", 0)
|
||||||
if d.get("changePercent", 0) == 0:
|
if d.get("changePercent", 0) == 0:
|
||||||
|
|||||||
Reference in New Issue
Block a user