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

strategy.exit()经strategy.cancel()取消后,满足条件会重启吗?

关于strategy.exit()结合session.ismarket的逻辑验证问题

我一直尝试结合session.ismarket的条件语句使用strategy.exit(),此前遇到的问题是:满足条件触发strategy.exit()后,它会等待止损、止盈等触发,但部分平仓单会在无法交易的凌晨3点触发。我编写了一段代码,想确认:当市场次日开盘时,strategy.exit()是否会重新触发,收盘时被strategy.cancel()取消,如此循环直到止盈目标达成?我已回测600多笔交易,但不确定是否存在问题,且未找到strategy.cancel()的详细资料。

代码如下:

if strategy.position_size>0 and session.ismarket
    strategy.exit('TP Long', qty_percent=50, limit=LongTakeProfit, comment='TP-L')
else if session.ismarket!=true
    strategy.cancel('TP Long')

逻辑验证与问题分析

  • 你的代码逻辑是成立的:
    • 当持仓且市场处于交易时段时,会重复调用strategy.exit()。Pine Script里,重复调用同名的strategy.exit()不会生成新委托,参数不变时就是维持原委托,参数变化则更新委托内容。
    • 当市场非交易时段时,strategy.cancel('TP Long')会撤销该止盈委托,避免休市时段触发无效平仓。
  • 循环逻辑符合预期:每个交易日开盘后,只要持仓且session.ismarket为真,strategy.exit()会重新生效(维持/更新委托);收盘后委托被取消,直到止盈价格触发或持仓被其他方式平仓,这个循环会持续。
  • 潜在注意事项:
    • 务必保证session.ismarket的会话设置和交易品种的实际交易时段完全匹配,否则可能出现委托提前取消或延迟触发的问题。
    • 回测600笔交易无异常的话,逻辑大概率没问题,但建议重点检查休市时段的委托状态,确认是否真的被取消,避免回测与实盘的差异。
  • 关于strategy.cancel():这个函数的核心作用就是撤销指定名称的策略委托单(包括strategy.exit生成的止盈止损委托),只要委托未成交,调用后就会被取消;已取消的委托不会自动恢复,必须重新调用strategy.exit()才能生成新的委托。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:22:23