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

strategy.exit()函数异常?限制仅执行一次却多次触发

Pine Script v5中strategy.exit()多次触发的问题分析

问题代码

//@version=5
strategy("RsI strategy", overlay=true)
length =input( 14)

var p = close
var stop =false
vrsi =ta.rsi(close, length)
co =ta.crossover(vrsi,75)
cu=close >p*1.0

var bool sell = na
if (not na(vrsi))
    if(co)
        p := close
        log.info('entry: {0}  :size:  {1}',strategy.position_entry_name,strategy.position_size)
        strategy.order("RsiLE1",strategy.long,qty = 10)

    if(cu and strategy.position_size >0 and not stop)
        log.info('stop: {0}   size: {1}', stop,strategy.position_size)
        stop := true            
        strategy.exit('stop',"RsiLE1", qty = 6, profit = 0.1)

问题原因

你用var stop = false限制strategy.exit()仅执行一次,但核心问题是未在新开仓时重置stop状态:

  • var声明的变量是全局持久化的,只会初始化一次。第一次触发exit后stop被设为true,后续再次开仓时没有将其重置为false,如果测试场景中第一次开仓后stop未被正确锁定(比如持仓状态波动),会导致cu条件在多个bar中持续满足,进而多次进入if块触发exit。
  • 你的log.info放在exit调用的代码块内,每次满足条件都会打印日志,看起来像是exit多次触发,实际是重复进入了条件判断块。

解决方法

在每次开仓(co条件触发)时,手动重置stop为false,确保新仓可以正常触发exit逻辑,同时简化冗余判断:

//@version=5
strategy("RsI strategy", overlay=true)
length =input(14)

var float p = na
var bool stop = false
vrsi = ta.rsi(close, length)
co = ta.crossover(vrsi, 75)
cu = close > p // 简化判断,无需乘1.0

if (not na(vrsi))
    if(co)
        p := close
        stop := false // 新开仓时重置stop状态
        log.info('entry: {0}  :size:  {1}', strategy.position_entry_name, strategy.position_size)
        strategy.order("RsiLE1", strategy.long, qty = 10)

    if(cu and strategy.position_size > 0 and not stop)
        log.info('stop: {0}   size: {1}', stop, strategy.position_size)
        stop := true            
        strategy.exit('stop', "RsiLE1", qty = 6, profit = 0.1)

额外说明

  • var变量仅用于需要跨bar持久化的状态,涉及每次开仓都要重置的标记,必须在开仓逻辑中手动重置。
  • strategy.exit()的profit参数是入场价到止盈价的价差(股票为美元,期货为点数),如果需要百分比止盈,可通过ta.valuewhen()获取入场价后计算目标价位。

内容的提问来源于stack exchange,提问作者孙建文

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 10:13:15