问答交流

求助:回测引擎中,非交易日被当成交易日

由bqvv5x58创建,最终由bqvv5x58 被浏览 5 用户

日期2025年11月29为周六,被回测引擎当成交易日了。

2026-04-16 15:57:24.395843 strategy(bkt000): 【计划执行前】日期 2025-11-27, is_signal_date=True

2026-04-16 15:57:24.396718 strategy(bkt000): 当前 buy_plan 中的键: []

2026-04-16 15:57:24.397585 strategy(bkt000): 测试 next_session(2025-11-27) -> 2025-11-28

2026-04-16 15:57:24.398523 strategy(bkt000): --- 2025-11-27 | 603898.SH ---

2026-04-16 15:57:24.399288 strategy(bkt000): streak=15 (need >= 12)

2026-04-16 15:57:24.400022 strategy(bkt000): trend_cond=True

2026-04-16 15:57:24.400783 strategy(bkt000): close=47.55867574280515, ma10=47.51162378050252, close<ma10? False

2026-04-16 15:57:24.401531 strategy(bkt000): volume=10910703.0, vol_ma5=17649836.6, vol_ok? True

2026-04-16 15:57:24.402275 strategy(bkt000): trend_info: start=2025-11-07, high_date=2025-11-21, days_since_start=20

2026-04-16 15:57:24.403003 strategy(bkt000): ap_hi=0.4486, need 0.2~0.45

2026-04-16 15:57:24.403736 strategy(bkt000): m_ratio=0.4685, need 0.4~0.8

2026-04-16 15:57:24.405672 strategy(bkt000): 【计划执行前】日期 2025-11-28, is_signal_date=True

2026-04-16 15:57:24.406564 strategy(bkt000): 当前 buy_plan 中的键: []

2026-04-16 15:57:24.407432 strategy(bkt000): 测试 next_session(2025-11-28) -> 2025-11-29

2026-04-16 15:57:24.408357 strategy(bkt000): --- 2025-11-28 | 603898.SH ---

2026-04-16 15:57:24.409127 strategy(bkt000): streak=16 (need >= 12)

2026-04-16 15:57:24.409856 strategy(bkt000): trend_cond=True

2026-04-16 15:57:24.410569 strategy(bkt000): close=47.341512839869964, ma10=48.13777681729896, close<ma10? True

2026-04-16 15:57:24.411329 strategy(bkt000): volume=8037300.0, vol_ma5=13760237.2, vol_ok? True

2026-04-16 15:57:24.412055 strategy(bkt000): trend_info: start=2025-11-07, high_date=2025-11-21, days_since_start=21

2026-04-16 15:57:24.412794 strategy(bkt000): ap_hi=0.4486, need 0.2~0.45

2026-04-16 15:57:24.413608 strategy(bkt000): m_ratio=0.4811, need 0.4~0.8

2026-04-16 15:57:24.414395 strategy(bkt000): Trigger date: 2025-11-28, Candidates: [{'ins': '603898.SH', 'trigger_close': 47.341512839869964, 'trigger_volume': 8037300.0, 'trigger_high': 48.1015830001431, 'trigger_low': 46.436667410973364}]

2026-04-16 15:57:24.459584 strategy(bkt000): 【计划执行前】日期 2025-12-01, is_signal_date=True

2026-04-16 15:57:24.464489 strategy(bkt000): 当前 buy_plan 中的键: [datetime.date(2025, 11, 29)]

2026-04-16 15:57:24.466302 strategy(bkt000): 测试 next_session(2025-12-01) -> 2025-12-02

2026-04-16 15:57:24.467843 strategy(bkt000): --- 2025-12-01 | 603898.SH ---

2026-04-16 15:57:24.468920 strategy(bkt000): streak=17 (need >= 12)

2026-04-16 15:57:24.469827 strategy(bkt000): trend_cond=True

2026-04-16 15:57:24.470573 strategy(bkt000): close=45.82137251932368, ma10=48.32960404822504, close<ma10? True

2026-04-16 15:57:24.471305 strategy(bkt000): volume=7689460.0, vol_ma5=11806592.6, vol_ok? True

2026-04-16 15:57:24.471998 strategy(bkt000): trend_info: start=2025-11-07, high_date=2025-11-21, days_since_start=24

2026-04-16 15:57:24.472659 strategy(bkt000): ap_hi=0.4486, need 0.2~0.45

2026-04-16 15:57:24.473360 strategy(bkt000): m_ratio=0.5693, need 0.4~0.8

2026-04-16 15:57:24.474101 strategy(bkt000): Trigger date: 2025-12-01, Candidates: [{'ins': '603898.SH', 'trigger_close': 45.82137251932368, 'trigger_volume': 7689460.0, 'trigger_high': 48.246358268766556, 'trigger_low': 45.42324053060918}]

\

评论
  • 回测的那一天的buy_plan是没有信号的呢
  •   原因是因为我调用next_session总是返回到except分支,导致计划买入的日期为下一个自然日 
  • # 获取下一个交易日(用于记录实际买入日期)
  •     cal = context.trading_calendar
  •     try:
  •         next_trading_day = cal.next_session(current_date)
  •         if next_trading_day is None:
  •             return
  •     except Exception:
  •         next_trading_day = current_date + pd.Timedelta(days=1)
{link}