fix:基础k线数据获取成功

master
Lxy 3 months ago
parent 2bb5ce4a0e
commit 13481c00f1

@ -295,14 +295,27 @@ class AmazingDataAdapter(DataSourceAdapter):
local_path=self.config.local_path,
is_local=self.config.use_local_cache
)
print(f"[amazingdata_adapter _fetch_klines_sync]股本结构: {equity_dict}")
if symbol in equity_dict:
equity_df = equity_dict[symbol]
# 获取最新的股本数据
print(f"[amazingdata_adapter _fetch_klines_sync]获取到 {len(equity_df)} 条股本结构数据")
# 获取最近交易日的 TOT_A_SHARE 作为总股本
if not equity_df.empty:
# 按日期排序,获取最新数据
if 'ANN_DATE' in equity_df.columns:
equity_df = equity_df.sort_values('ANN_DATE')
latest_equity = equity_df.iloc[-1]
tot_share = float(latest_equity.get('TOT_SHARE', 0)) * 10000 # 万股转股
float_share = float(latest_equity.get('FLOAT_SHARE', 0)) * 10000 # 万股转股
print(f"[amazingdata_adapter _fetch_klines_sync]总股本: {tot_share}, 流通股: {float_share}")
# 获取 TOT_A_SHAREA股总股本
tot_a_share = float(latest_equity.get('TOT_A_SHARE', 0))
tot_share = tot_a_share * 10000 # 万股转股
# 流通股使用 FLOAT_A_SHARE流通A股
float_a_share = float(latest_equity.get('FLOAT_A_SHARE', 0))
float_share = float_a_share * 10000 # 万股转股
print(f"[amazingdata_adapter _fetch_klines_sync]最近交易日 TOT_A_SHARE: {tot_a_share} 万股, FLOAT_A_SHARE: {float_a_share} 万股")
print(f"[amazingdata_adapter _fetch_klines_sync]换算后总股本: {tot_share} 股, 流通股: {float_share}")
else:
tot_share = 0
float_share = 0
@ -377,8 +390,10 @@ class AmazingDataAdapter(DataSourceAdapter):
# ============================================
# 4.2 计算市值
# ============================================
print(f"[amazingdata_adapter _fetch_klines_sync]close: {close}, 总股本: {tot_share}, 流通股本: {float_share}")
total_market_cap = close * tot_share if tot_share > 0 and close > 0 else None
float_market_cap = close * float_share if float_share > 0 and close > 0 else None
print(f"[amazingdata_adapter _fetch_klines_sync]总市值: {total_market_cap}, 流通市值: {float_market_cap}")
# ============================================
# 4.3 计算可交易日数

@ -32,25 +32,23 @@ class StockService:
except ValueError as e:
raise ValueError(f"Invalid date format: {e}")
# todo 暂时不从数据库获取,后期放开
# 获取K线数据从数据库
# items = self.repository.get_klines(
# req.symbol,
# req.freq,
# start,
# end,
# req.adjust
# )
items = [] # 先不从数据库获取,直接从适配器获取
items = self.repository.get_klines(
req.symbol,
req.freq,
start,
end,
req.adjust
)
# 如果数据库没有数据,尝试从适配器获取
if not items:
info(f"No data in DB for {req.symbol}, fetching from adapter...")
items = self._fetch_from_adapter(req.symbol, req.start, req.end, req.freq)
# # 保存到数据库
# if items:
# self._save_klines_to_db(req.symbol, req.freq, items)
# 保存到数据库
if items:
self._save_klines_to_db(req.symbol, req.freq, items)
# 处理复权(简化实现,实际需要复权系数表)
if req.adjust != AdjustType.NONE:

Loading…
Cancel
Save