将策略转换为指标:如何实现等价于strategy.opentrades==0的逻辑?
等价于
strategy.opentrades == 0的指标实现逻辑 在Pine Script的指标环境中,没有内置的strategy.opentrades这类跟踪策略仓位的变量,你需要自行维护一个仓位状态变量来实现等价逻辑。
核心思路
通过一个持久化的布尔变量记录当前是否持有仓位,当止盈/止损触发平仓时,将该变量重置为false;仅当变量为false时,才允许发出新的买卖信号。
代码示例
//@version=5 indicator("仓位跟踪指标", overlay=true) // 初始化持久化仓位状态变量,初始无仓位 var bool inPosition = false // 替换为你实际的止盈/止损触发条件 takeProfit = close > ta.sma(close, 50) + 0.05 stopLoss = close < ta.sma(close, 50) - 0.05 // 平仓时更新仓位状态 if takeProfit or stopLoss inPosition := false // 替换为你实际的多空开仓条件 longSignal = close > ta.sma(close, 50) shortSignal = close < ta.sma(close, 50) // 仅无仓位时发出多仓信号 if longSignal and not inPosition label.new(bar_index, low, "Buy", color=color.green, textcolor=color.white) inPosition := true // 标记进入持有仓位状态 // 仅无仓位时发出空仓信号 if shortSignal and not inPosition label.new(bar_index, high, "Sell", color=color.red, textcolor=color.white) inPosition := true // 标记进入持有仓位状态
关键等价逻辑
代码中的not inPosition(即inPosition == false)就对应策略中的strategy.opentrades == 0,确保只有在当前仓位通过止盈/止损平仓后,才会触发新的反向开仓信号。
内容的提问来源于stack exchange,提问作者Bot Trader
相关产品推荐
相关产品推荐

