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