TradingView
trading.kay27
Mar 13, 2016 9:30 PM

Kay_BBands v2 

U.S. Dollar/Japanese YenFXCM

Description

This is the second version of Kay_BBands. But this is infused with ADX.

When +DI (Directional Index) is above -DI, then Upper band will be visible and vice-versa.
This is when the ADX is above the threshold. 20 is the default but can be set to 25.

When the ADX is below the specified threshold, both bands gets visible, showing no trending conditions.

Use it with another band with setting 20/21, 0.6 deviation. Prices keeping above or below the 2nd bands upper or lower bounds shows trending conditions.
Comments
trading.kay27
Ah..!! Disregard older comment. I published the script again. Please follow the link below for updated script.
tradingview.com/script/ZRxIOdnC-Kay-BBandsV3/
trading.kay27
I didn't know how to update the old script so I just have pasted the code here instead of creating a new script. So please copy and paste the script in pine script editor and add it to the chart.
Changes - :
1) Updated default settings for the indicator
2) ADX setting are now DI (28), ADX (10), adx level to check is 10.
3) IMPORTANT one - When DI is up/down, lower/upper band will also have color (more visible that way.)

Play around the settings.. It really eliminates extra indicator checking visually... Please like if you think idea is good.
trading.kay27
//version=2
//2nd version of the band
study(shorttitle="Kay_BBv2", title="Kay_BBands", overlay=true)
length = input(20, minval=1)
hl = input(false, title="Band source as high/low ?", type=bool)
Usrc = hl ? high : close // input(high/Low, title="Upper Src")
Lsrc = hl ? low : close //input(low, title="Lower Src")
mult = input(2.0, minval=0.001, maxval=50)
basis = input(false, title="Use EMA ?", type=bool) ? ema(close, length) : sma(close, length)
//dev = mult * stdev(src, length)
isU = close > basis// and close > basis
//isBetween = (open > basis and close < basis) or (open < basis and close > basis)
isD = close < basis//open < basis and close < basis

//2 diviation
upperB = basis + (mult * stdev(Usrc, length))
lowerB = basis - (mult * stdev(Lsrc, length))

//1 Diviation
upperB1 = basis + ((mult/2) * stdev(Usrc, length))
lowerB1 = basis - ((mult/2) * stdev(Lsrc, length))

upper = isU and highest(Usrc, length) == Usrc ? upperB : upperB < fixnan(upper[1]) ? upperB : fixnan(upper[1])
lower = isD and lowest(Lsrc, length) == Lsrc ? lowerB : lowerB > fixnan(lower[1]) ? lowerB : fixnan(lower[1])

//Adx
adxlen = input(10, title="ADX Smoothing")
dilen = input(28, title="DI Length")
dirmov(len) =>
up = change(high)
down = -change(low)
truerange = rma(tr, len)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
[plus, minus]

adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)

[plus1, minus1] = dirmov(dilen)
sig = adx(dilen, adxlen)
level = input(10, title="ADX level", minval = 1)

plot(basis, color=sig > level ? red : blue, title="BB Basis")
//p1 = plot(upper, color=black, title="BB Upper modified", transp=0)
//p2 = plot(lower, color=black, title="BB Lower modified", transp=0)
//fill(p1, p2, color=blue, transp=90, title="Modified")

p1 = plot(upperB, color=sig > level ? (plus1 > minus1 ? #00C600 : #7D7D7D) : blue, title="BB Upper", transp=0)
p2 = plot(lowerB, color=sig > level ? (plus1 < minus1 ? #FF0000 : #7D7D7D) : blue, title="BB Lower", transp=0)
fill(p1, p2, color=blue, transp=95, title="Background")

p3 = plot(upperB1, color=sig > level ? (plus1 > minus1 ? #00C600 : #7D7D7D) : blue, title="BB Upper", transp=0)
p4 = plot(lowerB1, color=sig > level ? (plus1 < minus1 ? #FF0000 : #7D7D7D) : blue, title="BB Lower", transp=0)
fill(p3, p4, color=red, transp=95, title="Background")
Pramodnair
@TraDing.kay27, HI, not able to able to update your script to the "my script"... how do I manage that?
More