ArchBack
ArchBack

Reputation: 25

How do I make ta.barssince count correctly in pine script? Sometimes it doesn't count the most recent condition

g1 = ta.barssince(close <= adj_bollinger1 or close <= adj_bolliner2)

g2 = ta.barssince(close >= adj_bollinger1 or close >= adj_bolliner2)



if close > adj_bollinger1 and close > adj_bolliner2
    closeUPDWBollinger := green
    barsSinceCloseHupdwBollinger := g1
else if close < adj_bollinger1 and close < adj_bolliner2
    closeUPDWBollinger := red
    barsSinceCloseHupdwBollinger := g2
else 
    closeUPDWBollinger := color.gray
    barsSinceCloseHupdwBollinger := -0

Essentially, I want to know the number of bars since close is outside upper/lower Bollinger.
Problem arises when the bar count continues despite close going back inside and closing AND then the next bar going back out again to make the condition true.
I want it to reset to zero and continue on from that dip. Sometimes it only starts counting a few bars AFTER the condition had been true.
Thank you.

Upvotes: 0

Views: 2689

Answers (1)

G.Lebret
G.Lebret

Reputation: 3108

Your code did have syntax error.
Try this one :

//@version=5
indicator("My script", overlay=true, max_labels_count = 500)
[adj_bollinger1, middle, adj_bollinger2] = ta.bb(close,20,2)
g1 = ta.barssince(close <= adj_bollinger1 or close <= adj_bollinger2)
g2 = ta.barssince(close >= adj_bollinger1 or close >= adj_bollinger2)

closeUPDWBollinger = color.white
barsSinceCloseHupdwBollinger = 0

if close > adj_bollinger1 and close > adj_bollinger2
    closeUPDWBollinger := color.green
    barsSinceCloseHupdwBollinger := g1
else if close < adj_bollinger1 and close < adj_bollinger2
    closeUPDWBollinger := color.red
    barsSinceCloseHupdwBollinger := g2
else 
    closeUPDWBollinger := color.gray
    barsSinceCloseHupdwBollinger := 0
 
plot(adj_bollinger1, color=color.green)
plot(adj_bollinger2, color=color.red)
label.new(bar_index,close,str.tostring(barsSinceCloseHupdwBollinger), 
color=closeUPDWBollinger, yloc=closeUPDWBollinger==color.green?yloc.abovebar:yloc.belowbar)

To get this :
enter image description here

Upvotes: 1

Related Questions