TVC:DJI   Dow Jones Industrial Average Index
//@version=4
study("YZ Bollinger", overlay=true)
length10 = input(title="Bollinger Length", type=input.integer, defval=34, minval=1)
multiplier = input(title="Bollinger Deviation", type=input.float, defval=2, minval=1)
overbought = input(title="Overbought", type=input.integer, defval=1, minval=1)
oversold = input(title="Oversold", type=input.integer, defval=0, minval=1)
custom_timeframe = input(title="Use another Timeframe?", type=input.bool, defval=false)
highTimeFrame = input(title="Select The Timeframe", type=input.resolution, defval="60")
res1 = custom_timeframe ? highTimeFrame : timeframe.period

smabasis = sma(close, length10)
stdev = stdev(close, length10)
cierre = security(syminfo.tickerid, res1, close, false)
alta = security(syminfo.tickerid, res1, high, false)
baja = security(syminfo.tickerid, res1, low, false)
basis1 = security(syminfo.tickerid, res1, smabasis, false)
stdevb = security(syminfo.tickerid, res1, stdev, false)
dev5 = multiplier * stdevb // stdev(cierre, length)
upper = basis1 + dev5
lower5 = basis1 - dev5

bbr = (cierre - lower5) / (upper - lower5)

// plot(bbr)

// // MARCA LAS RESISTENCIAS
pintarojo = 0.0
pintarojo := nz(pintarojo)
pintarojo := bbr > overbought and bbr < overbought ? alta : nz(pintarojo)
p = plot(pintarojo, color=color.red, style=plot.style_circles, linewidth=2)

// // MARCA LOS SOPORTES
pintaverde = 0.0
pintaverde := nz(pintaverde)
pintaverde := bbr < oversold and bbr > oversold ? baja : nz(pintaverde)
g = plot(pintaverde, color=color.black, style=plot.style_circles, linewidth=2)
//

//
Pivot = input(false, title="Show Pivot High/Lows")
LP = input(defval = 4, title = "Left bars for Pivot")
RP = input(defval = 3, title = "Right bars for Pivot")

PH1 = pivothigh(LP,RP)
PH = valuewhen(PH1,PH1,0)
plotshape(Pivot and barstate.ishistory?PH1:na,style=shape.circle, color=#FF4500, text = "PH", textcolor=color.orange,location=location.abovebar, offset=-3, transp = 0, title="Pivot High")
plot(Pivot?PH:na,style=plot.style_circles, linewidth=2,color=security(syminfo.tickerid,timeframe.period,high,barmerge.lookahead_off)<=PH?#FF4500:na,title="Pivot High")

PL1 = pivotlow(LP,RP)
PL = valuewhen(PL1,PL1,0)
plotshape(Pivot and barstate.ishistory?PL1:na,style=shape.circle, color=#6B8E23, text = "PL", textcolor=color.orange,location=location.belowbar, offset=-3, transp = 0,title="Pivot High")
plot(Pivot?PL:na,style=plot.style_circles, linewidth=2, color=security(syminfo.tickerid,timeframe.period,low,barmerge.lookahead_off)>=PL?#6B8E23:na,title="Pivot High")

// inputs
Depth = input(12, title="Depth") // Depth
Deviation = input(5, title="Deviation") // Deviation

// ZigZag
lastlow = 0.0, lasthigh = 0.0
lastlow := nz(lastlow)
lasthigh := nz(lasthigh)

data(x) =>
d = security(syminfo.tickerid, timeframe.period, x, gaps = barmerge.gaps_off, lookahead = barmerge.lookahead_on)
d
getLow(x, y, z, a) =>
lastlow = y
v = data(x)
m = v==lastlow or data(z) - v > a*syminfo.mintick
if v!=lastlow
lastlow := v
if m
v := 0.0

getHigh(x, y, z, a) =>
lasthigh = y
v = data(x)
m = v==lasthigh or v - data(z) > a*syminfo.mintick
if v!=lasthigh
lasthigh := v
if m
v := 0.0


= getLow(lowest(Depth), lastlow, low, Deviation)
lastlow := e
zBB = v != 0.0
= getHigh(highest(Depth), lasthigh, high, Deviation)
lasthigh := e1
zSS = v1 != 0.0

zigzagDirection = -1
zigzagHigh = 0
zigzagLow = 0
zigzagDirection := zBB ? 0 : zSS ? 1 : nz(zigzagDirection, -1)
virtualLow = zigzagLow + 1
if not zBB or (zBB and zigzagDirection == zigzagDirection and low > low)
zigzagLow := nz(zigzagLow) + 1
virtualHigh = zigzagHigh + 1
if not zSS or (zSS and zigzagDirection == zigzagDirection and high < high)
zigzagHigh := nz(zigzagHigh) + 1
a=bar_index-zigzagLow
b=bar_index-zigzagHigh
var color c = na, c := fixnan(a < b ? color.lime : a > b ? color.red : na)
line zigzag = line.new(bar_index-zigzagLow, low, bar_index-zigzagHigh, high, color=c, style=line.style_solid, width=2)
if (zigzagDirection == zigzagDirection)
line.delete(zigzag)

zzPrevHigh = zigzagHigh
zzPrevLow = zigzagLow
if not na(zzPrevHigh)
zzPrevHigh := zzPrevHigh + 1
if not na(zzPrevLow)
zzPrevLow := zzPrevLow + 1
if zigzagDirection != zigzagDirection
if zigzagDirection == 1
zzPrevHigh := zigzagHigh + 1
if zigzagDirection == 0
zzPrevLow := zigzagLow + 1


//
f_draw_infopanel(_x, _y, _line, _text, _color)=>
_rep_text = ""
for _l = 0 to _line
_rep_text := _rep_text + "\n"
_rep_text := _rep_text + _text
var label _la = na
label.delete(_la)
_la := label.new(
x=_x, y=_y,
text=_rep_text, xloc=xloc.bar_time, yloc=yloc.price,
color=color.black, style=label.style_labelup, textcolor=_color, size=size.large)

posx = timenow + round(change(time)*10)
posy = highest(30)


f_draw_infopanel(posx, posy, 0, "Zigzag", a < b ? color.lime : color.red)
//

//
zz= crossover(pintaverde,pintaverde) or crossunder(pintaverde,pintaverde)
kp= crossover(pintarojo,pintarojo) or crossunder(pintarojo,pintarojo)
plotshape(zz,title="Low", color=color.red, style=shape.arrowup,location=location.belowbar,size=size.normal, text="Low",offset=0)
plotshape(kp ,title="High", color=color.green, style=shape.arrowdown,size=size.normal, text="High",offset=0)
Disclaimer

The information and publications are not meant to be, and do not constitute, financial, investment, trading, or other types of advice or recommendations supplied or endorsed by TradingView. Read more in the Terms of Use.