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

master
Lxy 3 months ago
parent 2bb5ce4a0e
commit 13481c00f1

@ -295,14 +295,27 @@ class AmazingDataAdapter(DataSourceAdapter):
local_path=self.config.local_path, local_path=self.config.local_path,
is_local=self.config.use_local_cache is_local=self.config.use_local_cache
) )
print(f"[amazingdata_adapter _fetch_klines_sync]股本结构: {equity_dict}")
if symbol in equity_dict: if symbol in equity_dict:
equity_df = equity_dict[symbol] equity_df = equity_dict[symbol]
# 获取最新的股本数据 print(f"[amazingdata_adapter _fetch_klines_sync]获取到 {len(equity_df)} 条股本结构数据")
# 获取最近交易日的 TOT_A_SHARE 作为总股本
if not equity_df.empty: 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] 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 # 万股转股 # 获取 TOT_A_SHAREA股总股本
print(f"[amazingdata_adapter _fetch_klines_sync]总股本: {tot_share}, 流通股: {float_share}") 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: else:
tot_share = 0 tot_share = 0
float_share = 0 float_share = 0
@ -377,8 +390,10 @@ class AmazingDataAdapter(DataSourceAdapter):
# ============================================ # ============================================
# 4.2 计算市值 # 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 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 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 计算可交易日数 # 4.3 计算可交易日数

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

Loading…
Cancel
Save