为何交易策略回测表现优异但实盘运行仅触发一次告警
问题成因排查
- 核心问题:未来函数导致回测信号虚高
代码中获取日线收盘价的语句day_close = security(syminfo.tickerid, "D", close, lookahead=barmerge.lookahead_on)使用了前瞻参数lookahead_on,回测时会调用还未走完的当日收盘数据来计算14日均线,生成的入场信号本身就包含未来数据,属于虚假的过拟合结果。实盘运行时当日未收盘无法拿到准确的日线收盘价,计算得到的day_ema和回测环境数值完全不符,符合要求的long_condition入场信号自然大幅减少。 - 核心参数缺失导致实盘匹配错误
代码中鳄鱼指标的三个基础变量:唇线lips、齿线teeth、颚线jaw没有明确定义周期、偏移参数,开仓用到的下单数量变量contracts也未做赋值。如果回测时默认填充的参数和实盘环境配置的参数不一致,会直接导致信号触发条件无法满足。 - 运行周期与触发规则不匹配
若回测时使用小周期K线(如15分钟、1小时)回测,实盘却配置为大周期K线运行,或是实盘告警仅设置为K线闭合时才触发计算,都会大幅降低信号生成频率。 - 浮盈浮亏计算逻辑适配问题
回测默认用K线收盘价计算profit变量,若实盘告警仅绑定开仓信号推送、忽略平仓信号推送,也会出现告警次数偏少的情况。
内容的提问来源于stack exchange,提问作者DennisLi
相关产品推荐
相关产品推荐

