如何在松脚本上第二次出现条件

How to get the second occurrence of a condition on pine script

我在tradingview有一个策略,每次这个条件为真时进入,但是我只需要在第二次出现这个条件时进入

LongCondition = (wasOverSold and crossoverBull) and up_trend == false

LongCondition 仅在出现蓝色十字的确切蜡烛(macd 交叉)上为真,此后它一直为假。

我已经尝试过使用历史引用运算符enter = LongCondition[1] ? true : false,但它只会延迟购买条目。

每次进入退出后如何找到第二次出现?

您可以为此使用计数器。当您的条件变为 true 时增加它,检查它是否为 2,输入位置并为下一个订单重置计数器。

这里是一个例子,每当 MACD 交叉发生第二次时,进场和出场。

//@version=5
strategy("My strategy", overlay=true, margin_long=100, margin_short=100)

n = input.int(2, "Number of occurences")

var bullCrossCnt = 0
var bearCrossCnt = 0

[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

bullCross = ta.crossover(macdLine, signalLine)
bearCross = ta.crossunder(macdLine, signalLine)
bullCrossCnt := bullCross ? bullCrossCnt + 1 : bullCrossCnt
bearCrossCnt := bearCross ? bearCrossCnt + 1 : bearCrossCnt

if (bullCross and bullCrossCnt == n)
    strategy.entry("Long", strategy.long)
    bullCrossCnt := 0  // Reset variable

if (bearCross and bearCrossCnt == n)
    strategy.close("Long")
    bearCrossCnt := 0  // Reset variable