You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pine Script自定义crossunder触发后策略未入场问题排查

问题原因分析
  • Stop单触发逻辑不匹配:你在strategy.entry中指定了stop=upper,这类止损入场单要求价格向上触碰upper价位才会成交。但你的触发条件my_crossunder是收盘价从上向下跌破upper,即信号触发时价格已经低于upper,若后续价格没有反弹回到upper价位,该挂单永远不会成交。
  • 挂单被提前取消:my_crossunder仅在跌破upper的当根K线成立,等到下一根K线计算时该条件已经变为false,会直接走到else分支执行strategy.cancel(id="BBS"),未成交的挂单会被立即撤销,自然无法入场。
  • K线计算时序问题:Pine Script策略默认仅在K线收盘时计算信号,my_crossunder确认生效时当根K线已经走完,你下的挂单仅能在下一根K线生效,若下一根K线最高价未触及upper,挂单不会成交就会被取消。
修复方案
  • 若不需要挂单等待,直接在信号触发时市价入场,删除stop=upper参数即可:
if (my_crossunder)
    strategy.entry("BBS", strategy.short, oca_name="BollingerBands", oca_type=strategy.oca.cancel, comment="BBS")
else
    strategy.cancel(id="BBS")
  • 若确实需要使用Stop单入场,修改取消逻辑,不要只要my_crossunder为false就取消,可改为挂单生效N根K线后再取消,或者添加额外的取消判定条件。
  • 若需要盘中实时计算信号,可在strategy声明中添加calc_on_every_tick=true参数,注意要避免引入未来函数导致信号漂移。

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:54:03