You are on page 1of 2

//@version=3

study(title="Ninja Indiacator by Stock Shikshak", shorttitle="NISS", overlay=false)

anchor = input(0,minval=0,maxval=1440,title="Use Alternate Anchor TimeFrame


(0=none, max=1440 (mins,D,W)")
nissType = input("Ninja", title="Calculate Oscillator From Which NISS Sets",
options=["Ninja","SuperNinja"])
smoothLen = input(1, minval=1, title="Oscillator Smoothing Length (1=none)")
signalLen = input(24, minval=1, title="NISS Oscillator Signal Length")
showZones = input(true, title="Show Bullish/Bearish Zones")
src = input(close, title="Source")
NISSFast(src, mult) =>
ema1 = ema(src, 3*mult)
ema2 = ema(src, 5*mult)
ema3 = ema(src, 8*mult)
ema4 = ema(src, 10*mult)
ema5 = ema(src, 12*mult)
ema6 = ema(src, 15*mult)
return = (ema1 + ema2 + ema3 + ema4 + ema5 + ema6)
return

NISSSlow(src, mult) =>


ema7 = ema(src, 30*mult)
ema8 = ema(src, 35*mult)
ema9 = ema(src, 40*mult)
ema10 = ema(src, 45*mult)
ema11 = ema(src, 50*mult)
ema12 = ema(src, 60*mult)
return = (ema7 + ema8 + ema9 + ema10 + ema11 + ema12)
return

superNISSFast(src, mult) =>


emaF1 = ema(src, 3*mult)
emaF2 = ema(src, 5*mult)
emaF3 = ema(src, 7*mult)
emaF4 = ema(src, 9*mult)
emaF5 = ema(src, 11*mult)
emaF6 = ema(src, 13*mult)
emaF7 = ema(src, 15*mult)
emaF8 = ema(src, 17*mult)
emaF9 = ema(src, 19*mult)
emaF10 = ema(src, 21*mult)
emaF11 = ema(src, 23*mult)
return = (emaF1 + emaF2 + emaF3 + emaF4 + emaF5 + emaF6 + emaF7 + emaF8 + emaF9
+ emaF10 + emaF11)/11
return

superNISSSlow(src, mult) =>


emaS1 = ema(src, 25*mult)
emaS2 = ema(src, 28*mult)
emaS3 = ema(src, 31*mult)
emaS4 = ema(src, 34*mult)
emaS5 = ema(src, 37*mult)
emaS6 = ema(src, 40*mult)
emaS7 = ema(src, 43*mult)
emaS8 = ema(src, 46*mult)
emaS9 = ema(src, 49*mult)
emaS10 = ema(src, 52*mult)
emaS11 = ema(src, 55*mult)
emaS12 = ema(src, 58*mult)
emaS13 = ema(src, 61*mult)
emaS14 = ema(src, 64*mult)
emaS15 = ema(src, 67*mult)
emaS16 = ema(src, 70*mult)
// average
return = (emaS1 + emaS2 + emaS3 + emaS4 + emaS5 + emaS6 + emaS7 + emaS8 +
emaS9 + emaS10 + emaS11 + emaS12 + emaS13 + emaS14 + emaS15 + emaS16)/16
return
mult = not isintraday or anchor==0 or interval<=0 or interval>=anchor or
anchor>1440 ? 1 : round(anchor/interval)>1? round(anchor/interval) : 1
mult := isintraday or anchor==0 or interval<=0 or interval>=anchor or anchor>52 ?
mult : round(anchor/interval)>1? round(anchor/interval) : 1
nissFast = nissType=="Guppy" ? NISSFast(src, mult) : superNISSFast(src, mult)
nissSlow = nissType=="Guppy" ? NISSSlow(src, mult) : superNISSSlow(src, mult)
nissOscRaw = ((nissFast - nissSlow) / nissSlow) * 100
nissOsc = sma(nissOscRaw, smoothLen)
nissSignal = ema(nissOscRaw, signalLen)
nissClr = nissOsc < nissSignal ? fuchsia : nissOsc > nissSignal ? blue : gray
bullishRule = crossover(nissOsc, nissSignal)
bearishRule = crossunder(nissOsc, nissSignal)
ruleState = 0
ruleState := bullishRule ? 1 : bearishRule ? -1 : nz(ruleState[1])
plot(nissOsc, title="NISS OSC Smooth", style=line, linewidth=2, color=nissClr,
transp=10)
plot(nissSignal, title="NISS Signal", style=line, linewidth=1, color=white,
transp=10)
HL1= hline(0.20,title="Upper limit", linestyle=line, linewidth=1, color=black)
HL2= hline(-0.20,title="Lower limit", linestyle=line, linewidth=1, color=black)
fill(HL1, HL2, white, transp=90)

You might also like