Pine Script 冷却一定数量的柱

Pine Script Cool-down for a certain number of bars

我在 Pine Script 中将以下代码与“barssince”结合使用,以在冷却 4 根柱后获得买入信号。

cooldown = ta.barssince(buySignal[1]) > 3 ? buySignal : na 
plotshape(cooldown, location=location.belowbar, color=color.lime, style=shape.triangleup, text="YEY")

下面table我试着解释“我想要什么”,这是另一种计算蜡烛的方法。蜡烛 #1 和蜡烛 #6 标记正确。蜡烛 #11 应该是,但考虑到“barssince”的逻辑,它是自最后一个信号以来的第 4 根蜡烛,但它是自冷却函数中最后一个“是”以来的第 5 根蜡烛。我希望你明白我的意思。函数应该是什么样子的?

Candle # 1 2 3 4 5 6 7 8 9 10 11
buySignal yes no no no no yes yes no no no yes
buySignal with cooldown yes no no no no yes no no no no no
candles since buySignal with cooldown 0 1 2 3 4 5 1 1 2 3 4
what I want yes no no no no yes no no no no yes

谢谢!

您可以使用变量来标记您的信号和冷却计数器是否变为 true。然后只需增加计数器并再次检查您的条件,然后重置您的变量。

在这里,我有一个简单的买入条件 (close > 40000)。然后它将标记每五个蜡烛 close > 40000.

//@version=5
indicator("My Script", overlay=true)
var bool isBought = false
var cnt = 0
buySignal = close > 40000

if not isBought and buySignal
    isBought := true
    cnt := 0
    
cnt := cnt + 1
bool coolDown = cnt > 4 and buySignal

if coolDown
    isBought := false
    
plotshape(series=coolDown, style=shape.triangleup, size=size.small, location=location.belowbar)
hline(price=40000, linestyle=hline.style_solid, linewidth=2)