Untitled

 avatar
unknown
plain_text
a month ago
12 kB
10
Indexable

//@version=5
indicator("RSI Fibonacci", 
     shorttitle='RSI FİBO', 
     overlay = false, 
     timeframe="", 
     timeframe_gaps = true)

import loxx/loxxexpandedsourcetypes/3
import loxx/loxxvarietyrsi/1

greencolor = #2DD204
redcolor = #D2042D 
bluecolor = #042dd2

SM02 = 'Signal'
SM03 = 'Middle Crossover'
SM04 = 'Fib Level 1 Crossover'
SM05 = 'Fib Level 2 Crossover'
SM06 = 'Fib Level 3 Crossover'
SM07 = 'Fib Level 4 Crossover'

variant(type, src, len) =>
    sig = 0.0
    if type == "SMA"
        sig := ta.sma(src, len) 
    else if type == "EMA"
        sig := ta.ema(src, len) 
    else if type == "WMA"
        sig := ta.wma(src, len)   
    else if type == "RMA"
        sig := ta.rma(src, len)  
    else if type == "VWMA"
        sig := ta.rma(src, len)  
    sig

smthtype = input.string("Kaufman", "Heikin-Ashi Better Caculation Type", options = ["AMA", "T3", "Kaufman"], group = "Basic Settings")

srcin = input.string("Close", "Source", group= "Basic Settings", 
     options = 
     ["Close", "Open", "High", "Low", "Median", "Typical", "Weighted", "Average", "Average Median Body", "Trend Biased", "Trend Biased (Extreme)", 
     "HA Close", "HA Open", "HA High", "HA Low", "HA Median", "HA Typical", "HA Weighted", "HA Average", "HA Average Median Body", "HA Trend Biased", "HA Trend Biased (Extreme)",
     "HAB Close", "HAB Open", "HAB High", "HAB Low", "HAB Median", "HAB Typical", "HAB Weighted", "HAB Average", "HAB Average Median Body", "HAB Trend Biased", "HAB Trend Biased (Extreme)"])

rsiper = input.int(15, "Period", group = "Basic Settings")
rsitype = input.string("Regular", "RSI type", options = ["RSX", "Regular", "Slow", "Rapid", "Harris", "Cuttler", "Ehlers Smoothed"], group = "Basic Settings")
smthper = input.int(15, "Smooth Period", group = "Basic Settings")
hlper = input.int(25, "Hilo Period", group = "Basic Settings")
type = input.string("SMA", "RSI Smoothing Type", options = ["EMA", "WMA", "RMA", "SMA", "VWMA"], group = "Basic Settings")

lev1in = input.float(0.236, "Fib Level 1", group = "Fibonacci Levels Settings")
lev2in = input.float(0.382, "Fib Level 2", group = "Fibonacci Levels Settings")
lev3in = input.float(0.618, "Fib Level 3", group = "Fibonacci Levels Settings")
lev4in = input.float(0.764, "Fib Level 4", group = "Fibonacci Levels Settings")

sigtype = input.string(SM03, "Signal type", options = [SM02, SM03, SM04, SM05, SM06, SM07], group = "Signal Settings")

//colorbars = input.bool(false, "Color bars?", group = "UI Options")
showsignals = input.bool(false, "Show signals?", group = "UI Options")
fillgradient = input.bool(false, "Show gradient fill?", group = "UI Options")


kfl=input.float(0.666, title="* Kaufman's Adaptive MA (KAMA) Only - Fast End", group = "Moving Average Inputs")
ksl=input.float(0.0645, title="* Kaufman's Adaptive MA (KAMA) Only - Slow End", group = "Moving Average Inputs")
amafl = input.int(2, title="* Adaptive Moving Average (AMA) Only - Fast", group = "Moving Average Inputs")
amasl = input.int(30, title="* Adaptive Moving Average (AMA) Only - Slow", group = "Moving Average Inputs")

haclose = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)
haopen = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, open)
hahigh = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, high)
halow = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, low)
hamedian = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, hl2)
hatypical = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, hlc3)
haweighted = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, hlcc4)
haaverage = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, ohlc4)

src = switch srcin
	"Close" => loxxexpandedsourcetypes.rclose()
	"Open" => loxxexpandedsourcetypes.ropen()
	"High" => loxxexpandedsourcetypes.rhigh()
	"Low" => loxxexpandedsourcetypes.rlow()
	"Median" => loxxexpandedsourcetypes.rmedian()
	"Typical" => loxxexpandedsourcetypes.rtypical()
	"Weighted" => loxxexpandedsourcetypes.rweighted()
	"Average" => loxxexpandedsourcetypes.raverage()
    "Average Median Body" => loxxexpandedsourcetypes.ravemedbody()
	"Trend Biased" => loxxexpandedsourcetypes.rtrendb()
	"Trend Biased (Extreme)" => loxxexpandedsourcetypes.rtrendbext()
	"HA Close" => loxxexpandedsourcetypes.haclose(haclose)
	"HA Open" => loxxexpandedsourcetypes.haopen(haopen)
	"HA High" => loxxexpandedsourcetypes.hahigh(hahigh)
	"HA Low" => loxxexpandedsourcetypes.halow(halow)
	"HA Median" => loxxexpandedsourcetypes.hamedian(hamedian)
	"HA Typical" => loxxexpandedsourcetypes.hatypical(hatypical)
	"HA Weighted" => loxxexpandedsourcetypes.haweighted(haweighted)
	"HA Average" => loxxexpandedsourcetypes.haaverage(haaverage)
    "HA Average Median Body" => loxxexpandedsourcetypes.haavemedbody(haclose, haopen)
	"HA Trend Biased" => loxxexpandedsourcetypes.hatrendb(haclose, haopen, hahigh, halow)
	"HA Trend Biased (Extreme)" => loxxexpandedsourcetypes.hatrendbext(haclose, haopen, hahigh, halow)
	"HAB Close" => loxxexpandedsourcetypes.habclose(smthtype, amafl, amasl, kfl, ksl)
	"HAB Open" => loxxexpandedsourcetypes.habopen(smthtype, amafl, amasl, kfl, ksl)
	"HAB High" => loxxexpandedsourcetypes.habhigh(smthtype, amafl, amasl, kfl, ksl)
	"HAB Low" => loxxexpandedsourcetypes.hablow(smthtype, amafl, amasl, kfl, ksl)
	"HAB Median" => loxxexpandedsourcetypes.habmedian(smthtype, amafl, amasl, kfl, ksl)
	"HAB Typical" => loxxexpandedsourcetypes.habtypical(smthtype, amafl, amasl, kfl, ksl)
	"HAB Weighted" => loxxexpandedsourcetypes.habweighted(smthtype, amafl, amasl, kfl, ksl)
	"HAB Average" => loxxexpandedsourcetypes.habaverage(smthtype, amafl, amasl, kfl, ksl)
    "HAB Average Median Body" => loxxexpandedsourcetypes.habavemedbody(smthtype, amafl, amasl, kfl, ksl)
	"HAB Trend Biased" => loxxexpandedsourcetypes.habtrendb(smthtype, amafl, amasl, kfl, ksl)
	"HAB Trend Biased (Extreme)" => loxxexpandedsourcetypes.habtrendbext(smthtype, amafl, amasl, kfl, ksl)
	=> haclose
	
rsimode = switch rsitype
	"RSX" => "rsi_rsx"
	"Regular" => "rsi_rsi"
	"Slow" => "rsi_slo"
	"Rapid" => "rsi_rap"
	"Harris" => "rsi_har"
	"Cuttler" => "rsi_cut"
	"Ehlers Smoothed" => "rsi_ehl"
	=> "rsi_rsi"


srcout = variant(type, src, smthper)
rsi = loxxvarietyrsi.rsiVariety(rsimode, srcout, rsiper)
sig = nz(rsi[1])

ll = ta.lowest(rsi, hlper)
hh = ta.highest(rsi, hlper)
rng = hh-ll

trdUp  = hh
trdDn  = ll
mid  = (hh+ll)/2

fupd = mid 
fupu = trdUp 
fdnu = mid 
fdnd = trdDn 

lev1 = ll + lev1in * rng
lev2 = ll + lev2in * rng
lev3 = ll + lev3in * rng
lev4 = ll + lev4in * rng

rsic = 0.
trdUpc = 0.
trdDnc = 0.

rsic := (rsi == hh and hh != ll) ? 1 : (rsi == ll and hh != ll) ? 2 : nz(rsic[1])
trdUpc := (trdUp > nz(trdUp[1])) ? 1 : (trdUp< nz(trdUp[1])) ? 2 : nz(trdUpc[1]) 
trdDnc := (trdDn > nz(trdDn[1])) ? 1 : (trdDn< nz(trdDn[1])) ? 2 : nz(trdDnc[1])

state = 0.
if sigtype == SM02
    if (rsi < sig) 
        state :=-1
    if (rsi > sig) 
        state := 1
else if sigtype == SM03
    if (rsi < mid) 
        state :=-1
    if (rsi  > mid)
        state := 1
else if sigtype == SM04
    if (rsi < lev1) 
        state :=-1
    if (rsi  > lev1)
        state := 1
else if sigtype == SM05
    if (rsi < lev2) 
        state :=-1
    if (rsi  > lev2)
        state := 1
else if sigtype == SM06
    if (rsi < lev3) 
        state :=-1
    if (rsi  > lev3)
        state := 1
else if sigtype == SM07
    if (rsi < lev4) 
        state :=-1
    if (rsi  > lev4)
        state := 1

colorout = 
     state == -1 ? redcolor : 
     state == 1 ? greencolor :
     color.gray

lvllo = plot(lev1, color =  bar_index % 2 ? greencolor : na)
plot(lev2, color =  bar_index % 2 ? color.yellow : na)
plot(lev3, color =  bar_index % 2 ? color.orange : na)
lvlhi =plot(lev4, color =  bar_index % 2 ? redcolor : na)
plot(rsi, linewidth = 3, color = colorout)

goLong = 
     sigtype == SM02 ? ta.crossover(rsi, sig) : 
     sigtype == SM03 ? ta.crossover(rsi, mid) : 
     sigtype == SM04 ? ta.crossover(rsi, lev1) : 
     sigtype == SM05 ? ta.crossover(rsi, lev2) : 
     sigtype == SM06 ? ta.crossover(rsi, lev3) : 
     ta.crossover(rsi, lev4) 
     
goShort = 
     sigtype == SM02 ? ta.crossunder(rsi, sig) : 
     sigtype == SM03 ? ta.crossunder(rsi, mid) : 
     sigtype == SM04 ? ta.crossunder(rsi, lev1) : 
     sigtype == SM05 ? ta.crossunder(rsi, lev2) : 
     sigtype == SM06 ? ta.crossunder(rsi, lev3) : 
     ta.crossunder(rsi, lev4) 

plotshape(goLong and showsignals, title = "Long", color = color.yellow, textcolor = color.yellow, text = "L", style = shape.triangleup, location = location.bottom, size = size.tiny)
plotshape(goShort and showsignals, title = "Short", color = color.fuchsia, textcolor = color.fuchsia, text = "S", style = shape.triangledown, location = location.top, size = size.tiny)

alertcondition(goLong, title="Long", message="Variety RSI w/ Fibonacci Auto Channel [Loxx]: Long\nSymbol: {{ticker}}\nsrc: {{close}}")
alertcondition(goShort, title="Short", message="Variety RSI w/ Fibonacci Auto Channel [Loxx]: Short\nSymbol: {{ticker}}\nsrc: {{close}}")

lo = math.min(lev1, lev4)
hi = math.max(lev1, lev4)

color2 = color.from_gradient(rsi,lo, hi, redcolor, greencolor)
fill(lvllo, lvlhi, color = fillgradient ? hi != lo ? color.new(color2, 90) :  color.new(colorout, 90)  : na )
//barcolor(colorbars ?  hi != lo ? color2 :  colorout: na)




//plot(rsi, linewidth = 3, color = colorout)
//plotcandle(rsi[1], ta.highest(rsi, 2), ta.lowest(rsi, 2), rsi, 
          // title="RSI Mumları", 
          // color=rsi > rsi[1] ? color.green : color.red)
plotcandle(rsi[1], ta.highest(rsi, 2), ta.lowest(rsi, 2), rsi, title="RSI Mumları", color=colorout)



upLine = input.int(70, minval=50, maxval=90, title="Upper Line Value?")
lowLine = input.int(30, minval=10, maxval=50, title="Lower Line Value?")
midLine = 50
//resCustom2 = input.timeframe(title="Use 2nd RSI? Check Box Above", defval="D")
//useCurrentRes2 = input.bool(false, title="Use 2nd RSI Plot On Same Timeframe?")
useCurrentRes = input.bool(true, title="Use Current Chart Resolution?")
resCustom = input.timeframe(title="Use Different Timeframe? UncheckBox Above", defval="60")
res = useCurrentRes ? timeframe.period : resCustom
outRSI = request.security(syminfo.tickerid, res, rsi)
crossUp = outRSI[1] < lowLine and outRSI > lowLine ? 1 : 0
crossDn = outRSI[1] > upLine and outRSI < upLine ? 1 : 0
sbh = input.bool(true, title="Show Back Ground Highlights When RSI is Above/Below High/Low Lines?")
sch = input.bool(true, title="Show Back Ground Highlights When RSI Cross?")
//bgcolor(sbh and aboveLine ? color.new(color.red, 70) : na, transp=70) // RSI üst sınırın üzerindeyse kırmızı arka plan
//bgcolor(sbh and belowLine ? color.new(color.green, 70) : na, transp=70) // RSI alt sınırın altındaysa yeşil arka plan
bgcolor(sch and crossUp ? color.new(color.lime, 40) : na, transp=40) // RSI alt sınırdan yukarı keserse lime rengi
bgcolor(sch and crossDn ? color.new(color.red, 40) : na, transp=40) // RSI üst sınırdan aşağı keserse kırmızı rengi
// Draw RSI Levels
hline(upLine, "Upper Level", color=color.new(color.red, 0), linewidth=1, linestyle=hline.style_dotted)
hline(lowLine, "Lower Level", color=color.new(color.green, 0), linewidth=1, linestyle=hline.style_dotted)
hline(midLine, "Mid Level", color=color.new(color.gray, 0), linewidth=1, linestyle=hline.style_dotted)
Leave a Comment