From 80c7fe0ba8dabf0c1f6f07c27b1d9eed61bb3640 Mon Sep 17 00:00:00 2001 From: aszerW Date: Fri, 15 May 2026 23:34:52 +0800 Subject: [PATCH] =?UTF-8?q?refactor(log):=20=E4=BC=98=E5=8C=96=E5=9B=9E?= =?UTF-8?q?=E6=B5=8B=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - strategy.py: 在数据获取前打印回测配置区间说明 - flask_api_source.py: 使用API返回的实际数据范围(date_range) - 原问题: 日志显示请求参数的start_date,而非实际数据范围 - 修改后: 各标的显示实际数据时间周期(如创业板2010年开始) --- datasource/flask_api_source.py | 7 ++++++- strategies/rotation/strategy.py | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/datasource/flask_api_source.py b/datasource/flask_api_source.py index dee8d92..8185986 100644 --- a/datasource/flask_api_source.py +++ b/datasource/flask_api_source.py @@ -138,6 +138,11 @@ class FlaskAPIDataSource: # 确保列名标准化 df = df[['open', 'high', 'low', 'close', 'volume']] + # 使用 API 返回的实际数据范围(而非请求参数) + actual_start = data.get('date_range', {}).get('start', start_date) + actual_end = data.get('date_range', {}).get('end', end_date) + actual_count = data.get('count', len(df)) + # 缓存 info 信息(如果有) if 'info' in data: df.attrs['info'] = data['info'] @@ -166,7 +171,7 @@ class FlaskAPIDataSource: if 'premium_stats' in data: df.attrs['premium_stats'] = data['premium_stats'] - print(f"✓ {code}: {len(df)} 条数据 ({start_date} ~ {end_date})") + print(f"✓ {code}: {actual_count} 条数据 ({actual_start} ~ {actual_end})") return df except requests.exceptions.Timeout: diff --git a/strategies/rotation/strategy.py b/strategies/rotation/strategy.py index 5e66c1c..7b8953c 100644 --- a/strategies/rotation/strategy.py +++ b/strategies/rotation/strategy.py @@ -157,6 +157,10 @@ class RotationStrategy(StrategyBase): else: print(f"✓ Flask API 服务正常 (SSH: {health.get('ssh_configured', False)})") + # 打印回测时间区间说明 + print(f"\n回测配置区间: {self.start_date} ~ {self.end_date}") + print("注: 各标的实际数据范围可能因上市时间/数据源限制而不同") + # 获取指数代码列表 index_codes = list(code_list_config.keys())