Untitled

 avatar
unknown
plain_text
12 days ago
6.9 kB
5
Indexable
//@version=5

import HeWhoMustNotBeNamed/ta/1

indicator("Cy indicator dupe [@ethan22]", overlay=true)

//////////////////////////////
//CLOUD, BANDS AND BAR COLOR//
//////////////////////////////

length = input.int(20, minval=1, title="EMA Length")
cloud_transparency = 90 

float ema_high = ta.ema(high, 10)
float ema_low = ta.ema(low, 13)

float ema_close = ta.ema(close, 10)

isAboveEMA = close > ema_close
isBelowEMA = close < ema_close

cloudColor = isAboveEMA ? color.new(color.green, 90) : isBelowEMA ? color.new(color.purple, 90) : color.new(color.blue, cloud_transparency)

barColor = isAboveEMA ? color.new(color.purple, 0) : isBelowEMA ? color.new(color.green, 0) : na

lineColor = isAboveEMA ? color.new(color.green, 0) : isBelowEMA ? color.new(color.purple, 0) : color.new(color.blue, cloud_transparency)

fill(plot(ema_high, color=cloudColor), plot(ema_low, color=cloudColor), color=cloudColor, title="Cloud")

barcolor(barColor)

//////////////////
//FIBONACCI LEVELS//
//////////////////
src = close
fastperiod = input.int(title="50 MA", defval=50, minval=1)
emaperiod = input.int(title="100 MA", defval=100, minval=1)

toc = math.max(open, close)
boc = math.min(open, close)

varip version = "v2.0"


effclose = close >= open ? toc : boc

midline = ta.ema(effclose, emaperiod)
plot(midline, color=color.purple, title="Mid Line", linewidth=1, transp=75)

dev = ta.stdev(effclose, emaperiod)

plusdevmult = toc > midline ? (toc - midline) / dev : 0
minusdevmult = boc < midline ? (midline - boc) / dev : 0

maxmult = math.max(minusdevmult, plusdevmult)

lm = ta.ema(maxmult, emaperiod)
lm2 = lm / 2
lm3 = lm2 * 0.38196601
lm4 = lm * 1.38196601
lm5 = lm * 1.61803399
lm6 = (lm + lm2) / 2

plot(midline + (dev * lm5), title="6 up", color=color.purple, transp=75)
plot(midline + (dev * lm4), title="5 up", color=color.purple, transp=75)
plot(midline + (dev * lm), title="4 up", color=color.purple, transp=75)
plot(midline + (dev * lm6), title="3 up", color=color.purple, transp=75)
plot(midline + (dev * lm2), title="2 up", color=color.purple, transp=75)
plot(midline + (dev * lm3), title="1 up", color=color.purple, transp=75)
plot(midline - (dev * lm3), title="1 down", color=color.purple, transp=75)
plot(midline - (dev * lm2), title="2 down", color=color.purple, transp=75)
plot(midline - (dev * lm6), title="3 down", color=color.purple, transp=75)
plot(midline - (dev * lm), title="4 down", color=color.purple, transp=75)
plot(midline - (dev * lm4), title="5 down", color=color.purple, transp=75)
plot(midline - (dev * lm5), title="6 down", color=color.purple, transp=75)


///////////
//SIGNALS//
///////////

varip groupSettings = "Settings "+ version
varip groupDisplay = "Display"
i_version = version
var bullcol = color.green
var bearcol = color.purple
var invisible = color.rgb(0, 0, 0, 100)
var bullcol_xlight = color.new(bullcol, 80)
var bearcol_xlight = color.new(bearcol, 80)
var bullcol_light = color.new(bullcol, 70)
var bearcol_light = color.new(bearcol, 70)
var bullcol_medium = color.new(bullcol, 60)
var bearcol_medium = color.new(bearcol, 60)
var shortcol = color.white
var longcol = color(#FFF58B)
var pivotcol = color.white
int bull_signal_loc = -107
int bear_signal_loc = 5
mode1 = "1 Oscillator Mode"
mode2 = "2 Overlay Mode (top and bottom no oscillator)"
mode3 = "3 Candle Mode"
mode = mode3
compact = mode == mode2
formula1 = "Standard (2 Period)"
formula2 = "Average"
formula = formula1
use_average = formula == formula2

threshold = input.int(30, title="Sensitivity", minval=1, maxval=50, tooltip = "Sensitivity of the signals to price action")
smoothType = 'ema'
average_ma = 3
plot_shading = false
plot_crosses = false
plot_expiration = false

shortLength = 21
shortSmoothingLength = 3

longLength = 112
longSmoothingLength = 3
_pr(length) =>
	float max = ta.highest(length)
	float min = ta.lowest(length)
	100 * (src - max) / (max - min)

float s_percentR = _pr(shortLength)
float l_percentR = _pr(longLength)
float avg_percentR = math.avg(s_percentR, l_percentR)

if shortSmoothingLength > 1
    s_percentR := ta.ma(s_percentR, smoothType, shortSmoothingLength)
if longSmoothingLength > 1
    l_percentR := ta.ma(l_percentR, smoothType, longSmoothingLength)
if average_ma > 1
    avg_percentR := ta.ma(avg_percentR, smoothType, average_ma)


var was_ob = false
var was_os = false

bool overbought = s_percentR >= -threshold and l_percentR >= -threshold
bool oversold = s_percentR <= -100+threshold and l_percentR <= -100+threshold
bool ob_reversal = not overbought and overbought[1]
bool os_reversal = not oversold and oversold[1]
bool ob_trend_start = overbought and not overbought[1]
bool os_trend_start = oversold and not oversold[1]
bool cross_bear = ta.crossover(l_percentR, s_percentR)
bool cross_bull = ta.crossunder(l_percentR, s_percentR)
top = hline(mode == mode1 ? 0 : na, 'Top', bearcol_medium, linestyle=hline.style_solid)
band1 = hline(mode == mode1 ? -threshold : na, 'Top Threshold', bearcol_medium, linestyle=hline.style_solid)
middle = hline(mode == mode1 ? -50 : na, 'Middle Line', color.new(#2F4F4F, 50), linestyle=hline.style_solid)
band0 = hline(mode == mode1 ? -100+threshold : na, 'Bottom Threshold', bullcol_medium, linestyle=hline.style_solid)
bottom = hline(mode == mode1 ? -100 : na, 'Bottom', bullcol_medium, linestyle=hline.style_solid)
plotshape(ob_reversal ? bear_signal_loc : na, title="Overbought Trend Reversal ▼", style=shape.triangledown, location=mode == mode1 ? location.absolute : mode == mode3 ? location.abovebar : location.top, color=bearcol, size=size.tiny)
plotshape(os_reversal ? bull_signal_loc : na, title="Oversold Trend Reversal ▲", style=shape.triangleup, location=mode == mode1 ? location.absolute : mode == mode3 ? location.belowbar : location.bottom, color=bullcol, size=size.tiny)

// Secondary Signal based on RSI with Different Sensitivity
secondary_rsi_length = input.int(14, title="Secondary RSI Length", minval=1)
secondary_rsi_threshold = input.int(30, title="Secondary RSI Sensitivity", minval=1, maxval=50)

float sec_rsi = ta.rsi(close, secondary_rsi_length)

bool sec_overbought = sec_rsi >= 100 - secondary_rsi_threshold
bool sec_oversold = sec_rsi <= secondary_rsi_threshold
bool sec_ob_reversal = not sec_overbought and sec_overbought[1]
bool sec_os_reversal = not sec_oversold and sec_oversold[1]

plotshape(sec_ob_reversal ? bear_signal_loc : na, title="Secondary RSI Overbought Reversal ▼", style=shape.labeldown, location=location.abovebar, color=color.purple, size=size.tiny, text = "!", textcolor = color.black)
plotshape(sec_os_reversal ? bull_signal_loc : na, title="Secondary RSI Oversold Reversal ▲", style=shape.labelup, location=location.belowbar, color=color.green, size=size.tiny, text = "!", textcolor = color.black)
Editor is loading...
Leave a Comment