Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=4
- //
- // Works: [LunaOwl] RSI American Line [RSIB]
- //
- ////////////////////////////////////
- // ~~!!*(๑╹◡╹๑) ** //
- // Production: @LunaOwl 彭彭 //
- // Written in: 2019/08/27 //
- // Posted in: 2019/10/14 //
- // Release 2: 2019/10/21 //
- // Update one: 2019/10/22 //
- ////////////////////////////////////
- //
- //==Setting the study ==//
- study("RSI American Line", shorttitle = "RSIB", overlay = false)
- //==Enter the value ==//
- std = input(false, title = "Show normal RSI")
- bar = input( true, title = "Show US line RSIB")
- src = input(close, title = "source")
- len = input( 14, title = "length parameter", minval = 2, maxval = 100)
- //==Set the inner band ==//
- inner = input("dynamic", title = "inside form", options = ["dynamic", "fixed", "disabled"])
- inner_type = input("standard deviation", title = "dynamic inner calculation method", options = ["standard deviation", "smooth moving average"])
- inner_mult = input(1.0, title = "inner width", minval = 0.0, maxval = 4.0, step = 0.2)
- //==calculation ==//
- norm = if std
- 1
- else
- avg(src, src[1])
- gain_loss = change(src) / norm
- RSI = 50 + 50 * rma(gain_loss, len) / rma(abs(gain_loss), len)
- RSI_ch = if inner != "disabled"
- if inner_type == "standard deviation"
- stdev(abs(change(RSI)), len)
- else
- rma(abs(change(RSI)), len)
- //==Draw RSIB==//
- o = bar ? RSI[1] : na
- h = bar ? RSI : na
- l = bar ? RSI[1] : na
- c = bar ? RSI : na
- plotbar(o, h, l, c, title = "RSIB", color = src[1] < src ? color.blue : color.red)
- //==Draw RSI==//
- plot(bar ? na : RSI, color = #A64D79FF, title = "RSI")
- //==Draw a channel==//
- b1 = hline(30,
- color = color.red,
- linestyle = hline.style_dotted,
- linewidth = 1,
- title = "oversold"
- )
- b2 = hline(70,
- color = color.blue,
- linestyle = hline.style_dotted,
- linewidth = 1,
- title = "overbought"
- )
- fill(b1, b2, color = #AB47BC, title = "band background")
- inner_h = plot(
- inner == "disabled" ? na : 50 + inner_mult * (inner == "dynamic" ? RSI_ch : 5.0),
- color = #A64D7933, title = "with inner edge"
- )
- inner_l = plot(
- inner == "disabled" ? na : 50 - inner_mult * (inner == "dynamic" ? RSI_ch : 5.0),
- color = #A64D7933, title = "inside lower edge"
- )
- fill(inner_h, inner_l, color = #A64D7922, title = "with inner background")
- // Bollinger Bands S/R ════════════════════════════════════════════════════════
- // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
- show_dbbl = input(false, title='Display Bollinger Bands S/R ═════════════════')
- show_dbbt = input(false, title='Trade Display - Bollinger Bands +++++++++++++++')
- length10 = input(title="=> Bollinger Length", type=input.integer, defval=41, minval=1)
- multiplier = input(title="=> Bollinger Deviation", type=input.float, defval=2, minval=1)
- overbought = 1 //input(title="=> Overbought", type=input.integer, defval=1, minval=1)
- oversold = 0 //input(title="=> Oversold", type=input.integer, defval=0, minval=0)
- orr = bar ? RSI[1] : RSI
- hrr = bar ? RSI : RSI
- lrr = bar ? RSI[1] : RSI
- crr = bar ? RSI : RSI
- smabasis = sma(RSI, length10)
- stdev = stdev(RSI, length10)
- cierre = RSI
- alta = RSI
- baja = RSI
- basis1 = smabasis
- stdevb = stdev
- dev5 = multiplier * stdevb
- upper = basis1 + dev5
- lower5 = basis1 - dev5
- bbr = (cierre - lower5) / (upper - lower5)
- // plot(bbr)
- // // Top Resistance Band
- pintarojo = 0.0
- pintarojo := nz(pintarojo[1])
- pintarojo := bbr[1] > overbought and bbr < overbought ? alta[1] : nz(pintarojo[1])
- p = plot(show_dbbl ? pintarojo : na, color=#d904c4, style=plot.style_circles, linewidth=2, transp=0)
- // // Bottom Support Band
- pintaverde = 0.0
- pintaverde := nz(pintaverde[1])
- pintaverde := bbr[1] < oversold and bbr > oversold ? baja[1] : nz(pintaverde[1])
- g = plot(show_dbbl ? pintaverde : na, color=#0959e3, style=plot.style_circles, linewidth=2, transp=0)
- //
- Long_bb = cross(RSI, pintaverde) //crossover(zlemabarl,pintaverde) or crossunder(zlemabarh,pintaverde) or crossover(zlemabarl,pintarojo) or crossover(pintaverde,pintaverde[1])?1:0
- Short_bb = cross(RSI, pintarojo) //crossunder(zlemabarh,pintarojo) or crossover(zlemabarl,pintarojo) or crossunder(zlemabarh,pintaverde) or crossover(pintarojo,pintarojo[1])?1:0
- plotshape(show_dbbt ? Short_bb and src[1] > src: na, text="Dn", title="Condition Short-Trade", style=shape.triangledown, size=size.tiny, location=location.top, color=color.fuchsia, transp=0)
- plotshape(show_dbbt ? Long_bb and src[1] < src: na, text="Up", title="Condition Long-Trade", style=shape.triangleup, size=size.tiny, location=location.bottom, color=color.aqua, transp=0)
- //author: wmx_Q_systen_trading
- //this study simply draws a trend line base on pivot strength configuration,
- // and also provide configuration by using the close price and show historical trend lines
- //###################################################||
- // Diagnal High/Low support and Resistance Lines ||
- //###################################################||
- show_dhul = input(false, title='Display Diagnol S/R Lines ═══════════════════')
- showhtrend=input(true, title="Show History Trend Line")
- useclose=input(false,title='Use Open/Close')
- hr=bar?(useclose?c:h):RSI
- lr=bar?(useclose?c:l):RSI
- strength=input(10,title="═> Diagnol S/R left Strength", minval=5, maxval=200)
- draw_trend(High, Low, leftlen,rightlen,n)=>
- //upper trend line
- var int startx=0
- var float starty=0.0
- var int startx2=0
- var float starty2=0.0
- var int endx=0
- var float endy=0.0
- var float endy0=0.0
- var float slope=0.0
- var bool ispivothigh =false
- ispivothigh:=High[rightlen] == pivothigh(High,leftlen,rightlen)
- starty2:=valuewhen(ispivothigh,High[rightlen],n+2)
- startx2 := valuewhen(ispivothigh,bar_index,n+2)
- starty:=valuewhen(ispivothigh,High[rightlen],n+1)
- startx := valuewhen(ispivothigh,bar_index,n+1)
- endy:=valuewhen(ispivothigh,High[rightlen],n)
- endx := valuewhen(ispivothigh,bar_index,n)
- slope:=(endy-starty)/(endx-startx)
- valend = endy
- var float Endy=0.0
- Endy:=abs(endx-startx+rightlen)*slope + starty
- if slope<0 and show_dhul
- if n==0
- upper0 = line.new(endx, Endy, startx-rightlen, starty, width = 1, color=color.maroon, extend=extend.left)
- line.delete(upper0[1])
- upper1 = line.new(endx, Endy, startx-rightlen, starty, width = 4, color=color.maroon, extend=extend.none)
- line.delete(upper1[1])
- var float slope2= (endy-starty2)/(endx-startx2)
- var float Endy2=0.0
- Endy:=abs(endx-startx2+rightlen)*slope + starty2
- if slope2<0 and show_dhul
- upper2 = line.new(endx, Endy2, startx2-rightlen, starty2, width = 4, color=color.maroon, extend=extend.none)
- line.delete(upper2[1])
- //lower trend line
- var int lstartx=0
- var float lstarty=0.0
- var int lstartx2=0
- var float lstarty2=0.0
- var int lendx=0
- var float lendy=0.0
- var float lendy0=0.0
- var float lslope=0.0
- var bool ispivotlow =false
- ispivotlow:=Low[rightlen] == pivotlow(Low,leftlen,rightlen)
- lstarty2:=valuewhen(ispivotlow,Low[rightlen],n+2)
- lstartx2 := valuewhen(ispivotlow,bar_index,n+2)
- lstarty:=valuewhen(ispivotlow,Low[rightlen],n+1)
- lstartx := valuewhen(ispivotlow,bar_index,n+1)
- lendy:=valuewhen(ispivotlow,Low[rightlen],n)
- lendx := valuewhen(ispivotlow,bar_index,n)
- lslope:=(lendy-lstarty)/(lendx-lstartx)
- var float lEndy=0.0
- lEndy:=abs(lendx-lstartx+rightlen)*lslope + lstarty
- if lslope>0 and show_dhul
- if n==0
- Lower0 = line.new(lendx, lEndy, lstartx-rightlen, lstarty, width = 1, color=color.navy, extend=extend.left)
- line.delete(Lower0[1])
- Lower1 = line.new(lendx, lEndy, lstartx-rightlen, lstarty, width = 4, color=color.navy, extend=extend.none)
- line.delete(Lower1[1])
- var float lslope2= (lendy-lstarty2)/(lendx-lstartx2)
- var float lEndy2=0.0
- lEndy:=abs(lendx-lstartx2+rightlen)*lslope + lstarty2
- if lslope2>0 and show_dhul
- lower2 = line.new(lendx, lEndy2, lstartx2-rightlen, lstarty2, width = 4, color=color.navy, extend=extend.none)
- line.delete(lower2[1])
- left=strength
- right=strength
- //draw current trendling
- draw_trend(hr, lr,left,right,0)
- if showhtrend
- //show history trendling
- draw_trend(hr, lr,left,right,1)
- draw_trend(hr, lr,left,right,2)
- draw_trend(hr, lr,left,right,3)
- draw_trend(hr, lr,left,right,4)
- draw_trend(hr, lr,left,right,5)
- draw_trend(hr, lr,left,right,6)
- draw_trend(hr, lr,left,right,7)
- draw_trend(hr, lr,left,right,8)
- draw_trend(hr, lr,left,right,9)
- draw_trend(hr, lr,left,right,10)
- draw_trend(hr, lr,left,right,11)
- draw_trend(hr, lr,left,right,12)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement