From 64bfd031b31acf4274cece2b8bd87b261182a2b3 Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Wed, 28 Jan 2026 10:08:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A2=84=E7=83=AD=E5=A4=A9?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backtest.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/backtest.py b/backtest.py index b48fc6b..538315b 100644 --- a/backtest.py +++ b/backtest.py @@ -229,16 +229,26 @@ def main(): apply_color_scheme() - # 加载数据 - print(f"加载股票数据: {args.code} ({args.start_date} ~ {args.end_date})") - data = load_data_from_db(args.code, args.start_date, args.end_date) - print(f"数据加载完成,共 {len(data)} 条记录") + # 计算预热开始日期(回测开始日期往前推 warmup_days 天) + warmup_start_date = ( + pd.to_datetime(args.start_date) - pd.Timedelta(days=args.warmup_days) + ).strftime("%Y-%m-%d") + + # 加载数据(包含预热期间) + print(f"加载股票数据(含预热): {args.code} ({warmup_start_date} ~ {args.end_date}),预热天数: {args.warmup_days}") + data = load_data_from_db(args.code, warmup_start_date, args.end_date) + print(f"数据加载完成,共 {len(data)} 条记录(含预热)") # 加载策略 calculate_indicators, strategy_class = load_strategy(args.strategy_file) - # 计算指标 + # 计算指标(在扩展数据上计算,确保长周期指标有足够历史数据) data = calculate_indicators(data) + print(f"指标计算完成") + + # 截取回测期间的数据(去掉预热期间) + data = data.loc[args.start_date : args.end_date] + print(f"回测数据范围: {args.start_date} ~ {args.end_date},共 {len(data)} 条记录") # 执行回测 from backtesting import Backtest