PineScript:在 x 条柱后输入

PineScript: enter after x amount of bars

所以我的代码似乎工作正常,但是当两次满足条件时,它会重新启动柱上的计数器,导致错失预期入场的机会。

我想要在 rsi 收盘价低于 10 后的 x 条柱线之后入场,无论 rsi 在 x 线之前做什么。问题是如果 rsi 低于 10,然后向上交叉,然后再次向下交叉,它会在进场前重新启动柱上的计数器,这会产生问题。

rsi = ta.rsi(close, rsiLen)
isOB= ta.crossover(rsi, i_OB)
isOS= ta.crossunder(rsi, i_OS)
BarsSinceOB = ta.barssince(isOB)
BarsSinceOS = ta.barssince(isOS)

BUY = BarsSinceOS == i_delay 
ACT = direction < 0
strategy.entry("long", strategy.long, when = ACT and BUY)

您可以通过使用一些变量和 if 条件来实现。

例如,我将 rsi 目标设置为 50,而不是 10。如您在屏幕截图中所见,它会在 rsi 低于 50 时开始计数,并且会忽略 10 根柱内的 rsi 移动。 3 个绿色箭头是 RSI 收盘低于 50 的地方。

//@version=5
indicator("My Script")

barDelay = 10
rsiTarget = 50
my_rsi = ta.rsi(close, 14)
rsi_cond = ta.crossunder(my_rsi, rsiTarget)

var barIdxAtCond = 0
var startCounting = false
startCounting := rsi_cond ? true : startCounting
barsElapsed = false

if (not startCounting[1] and startCounting)
    barIdxAtCond := bar_index
    
if (startCounting and ((bar_index - barIdxAtCond) > barDelay-1))
    startCounting := false
    barsElapsed := true

hline(rsiTarget, "H", color.red)
plot(my_rsi)
bgcolor(barsElapsed ? color.green : na)