diff --git a/app/agents/departments.py b/app/agents/departments.py index df3206f..3d2cf78 100644 --- a/app/agents/departments.py +++ b/app/agents/departments.py @@ -399,7 +399,13 @@ class DepartmentAgent: lines.append(f"- {table}: 已返回窗口 {window} 的数据,跳过重复请求") continue - rows = self._broker.fetch_table_rows(table, ts_code, trade_date, window) + rows = self._broker.fetch_table_rows( + table, + ts_code, + trade_date, + window, + auto_refresh=False # 避免在回测过程中触发自动补数 + ) if rows: preview = ", ".join( f"{row.get('trade_date', 'NA')}" for row in rows[: min(len(rows), 5)] diff --git a/app/backtest/engine.py b/app/backtest/engine.py index a3fd760..4e8006c 100644 --- a/app/backtest/engine.py +++ b/app/backtest/engine.py @@ -139,6 +139,7 @@ class BacktestEngine: ts_code, trade_date_str, self.required_fields, + auto_refresh=False # 避免回测时触发自动补数 ) closes = self.data_broker.fetch_series( @@ -147,6 +148,7 @@ class BacktestEngine: ts_code, trade_date_str, window=60, + auto_refresh=False, # 避免在回测中触发自动补数 ) close_values = [value for _date, value in closes if value is not None] @@ -171,6 +173,7 @@ class BacktestEngine: ts_code, trade_date_str, window=20, + auto_refresh=False, # 避免在回测中触发自动补数 ) turnover_values = [value for _date, value in turnover_series if value is not None] @@ -255,9 +258,10 @@ class BacktestEngine: is_suspended = self.data_broker.fetch_flags( "suspend", ts_code, - trade_date_str, - "suspend_date <= ? AND (resume_date IS NULL OR resume_date > ?)", - (trade_date_str, trade_date_str), + trade_date, + "trade_date = ?", + [trade_date], + auto_refresh=False, # 避免在回测中触发自动补数 ) features = { @@ -511,7 +515,7 @@ class BacktestEngine: if not price_map and state.holdings: trade_date_compact = trade_date.strftime("%Y%m%d") for ts_code in list(state.holdings.keys()): - fetched = self.data_broker.fetch_latest(ts_code, trade_date_compact, ["daily.close"]) + fetched = self.data_broker.fetch_latest(ts_code, trade_date_compact, ["daily.close"], auto_refresh=False) price = fetched.get("daily.close") if price: price_map[ts_code] = float(price) diff --git a/app/utils/data_access.py b/app/utils/data_access.py index cc4302d..cae6cc1 100644 --- a/app/utils/data_access.py +++ b/app/utils/data_access.py @@ -377,6 +377,7 @@ class DataBroker: trade_date: str, where_clause: str, params: Sequence[object], + auto_refresh: bool = True, ) -> bool: """Generic helper to test if a record exists (used for limit/suspend lookups).""" @@ -415,6 +416,7 @@ class DataBroker: ts_code: str, trade_date: str, window: int, + auto_refresh: bool = True, ) -> List[Dict[str, object]]: if window <= 0: return []