Pine script wizard assistance required for color changing conditions The following script contains a lagging span line combined with Bollinger Bands. I need a color changing function for the lagging span: Above BB upper band = color1. Between BB upper & lower bands = color2. Below BB lower band = color3.
The Script:
//@version=5
indicator(title="Lagging span & BB", shorttitle="Lagging span & BB", overlay=true, timeframe="", timeframe_gaps=true)
// Bollinger Band
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset, display = display.none)
p1 = plot(upper, "Upper", color=#8d8d8d, offset = offset)
p2 = plot(lower, "Lower", color=#8d8d8d, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(177, 177, 177), display = display.none)
//Lagging Span
displacement = input.int(25, minval=1, title="Lagging Span")
lagcol = input.color(#9b5dff, 'Barney Solid Color')
plot(close, offset = -displacement + 1, color = lagcol, title="Lagging Span")
What i have tried nr1:
//@version=5
indicator(title="Lagging span & BB", shorttitle="Lagging span & BB", overlay=true, timeframe="", timeframe_gaps=true)
// Bollinger Band
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset, display = display.none)
p1 = plot(upper, "Upper", color=#8d8d8d, offset = offset)
p2 = plot(lower, "Lower", color=#8d8d8d, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(177, 177, 177), display = display.none)
//Lagging Span
cclag = input(true, 'Enable Bull/Bear Colors')// Enables/disables color changing function
displacement = input.int(25, minval=1, title="Lagging Span")
lagcol = input.color(#9b5dff, 'Barney Solid Color') //solid color if color change function is not enabled
bullcol = input.color(#9b5dff, 'Bull Color') //Color if lagging span is above upper BB
insideBBcol = input.color(#35b940, 'Inside BB Color') //Color if lagging span is between upper & lower BB
bearcol = input.color(color.red, 'Bear color') //Color if lagging span is below lower BB
cclagcol = cclag ? close > upper ? bullcol : close < upper ? insideBBcol : close < lower ? bearcol : na : lagcol
plot(close, offset = -displacement + 1, color = cclagcol, title = "Lagging Span")
What i have tried nr2:
//@version=5
indicator(title="Lagging span & BB", shorttitle="Lagging span & BB", overlay=true, timeframe="", timeframe_gaps=true)
// Bollinger Band
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset, display = display.none)
p1 = plot(upper, "Upper", color=#8d8d8d, offset = offset)
p2 = plot(lower, "Lower", color=#8d8d8d, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(177, 177, 177), display = display.none)
//Lagging Span
cclag = input(true, 'Enable Bull/Bear Colors')// Enables/disables color changing function
displacement = input.int(25, minval=1, title="Lagging Span")
lagcol = input.color(#9b5dff, 'Barney Solid Color') //Solid color if color change function is not enabled
bullcol = input.color(#9b5dff, 'Above BB Color') //Color if lagging span is above upper BB
insideBBcol = input.color(#35b940, 'Inside BB Color') //Color if lagging span is between upper & lower BB
bearcol = input.color(color.red, 'Below BB color') //Color if lagging span is below lower BB
xup = ta.crossover(close, upper)
xmid = ta.crossover(close, lower)
xdn = ta.crossunder(close, lower)
cclagcol = cclag ? xup ? bullcol :xmid ? insideBBcol : xdn ? bearcol : na : lagcol
plot(close, offset = -displacement + 1, color = cclagcol, title = "Lagging Span")
Your plot offset
makes it so you have to look at the price on the upper
and lower
price values in the past with this:
isOver = close > upper[displacement - 1]
isBelow = close < lower[displacement - 1]
Here is an image of the result I get with the following code. Green if it is over, purple if it is mid and red if it is below.
isOver = close > upper[displacement - 1]
isBelow = close < lower[displacement - 1]
lagcol = isOver ? color.green : isBelow ? color.red : color.purple
plot(close, offset = -displacement + 1, color = lagcol, title="Lagging Span")
full code:
//@version=5
indicator(title="Lagging span & BB", shorttitle="Lagging span & BB", overlay=true, timeframe="", timeframe_gaps=true)
// Bollinger Band
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset, display = display.none)
p1 = plot(upper, "Upper", color=#8d8d8d, offset = offset)
p2 = plot(lower, "Lower", color=#8d8d8d, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(177, 177, 177), display = display.none)
//Lagging Span
displacement = input.int(25, minval=1, title="Lagging Span")
isOver = close > upper[displacement - 1]
isBelow = close < lower[displacement - 1]
lagcol = isOver ? color.green : isBelow ? color.red : color.purple
plot(close, offset = -displacement + 1, color = lagcol, title="Lagging Span")