Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
- // © loxx
- //@version=5
- indicator("Jurik-Smoothed CCI w/ MA Deviation [Loxx]",
- shorttitle="JSCCIMAD [Loxx]",
- overlay = false,
- timeframe="",
- timeframe_gaps = true)
- import loxx/loxxmas/1
- import loxx/loxxjuriktools/1
- greencolor = #2DD204
- redcolor = #D2042D
- maintype = input.string("Exponential Moving Average - EMA", "Deviation MA Type", options = ["ADXvma - Average Directional Volatility Moving Average", "Ahrens Moving Average"
- , "Alexander Moving Average - ALXMA", "Double Exponential Moving Average - DEMA", "Double Smoothed Exponential Moving Average - DSEMA"
- , "Exponential Moving Average - EMA", "Fast Exponential Moving Average - FEMA", "Fractal Adaptive Moving Average - FRAMA"
- , "Hull Moving Average - HMA", "IE/2 - Early T3 by Tim Tilson", "Integral of Linear Regression Slope - ILRS"
- , "Instantaneous Trendline", "Laguerre Filter", "Leader Exponential Moving Average", "Linear Regression Value - LSMA (Least Squares Moving Average)"
- , "Linear Weighted Moving Average - LWMA", "McGinley Dynamic", "McNicholl EMA", "Non-Lag Moving Average", "Parabolic Weighted Moving Average"
- , "Recursive Moving Trendline", "Simple Moving Average - SMA", "Sine Weighted Moving Average", "Smoothed Moving Average - SMMA"
- , "Smoother", "Super Smoother", "Three-pole Ehlers Butterworth", "Three-pole Ehlers Smoother"
- , "Triangular Moving Average - TMA", "Triple Exponential Moving Average - TEMA", "Two-pole Ehlers Butterworth", "Two-pole Ehlers smoother"
- , "Volume Weighted EMA - VEMA", "Zero-Lag DEMA - Zero Lag Double Exponential Moving Average", "Zero-Lag Moving Average"
- , "Zero Lag TEMA - Zero Lag Triple Exponential Moving Average"],
- group = "Basic Settings")
- ccisrc = input.source(hlc3, "CCI Source", group = "Basic Settings")
- cciper = input.int(32, "CCI Period", group = "Basic Settings")
- jsmth = input.int(32, "Jurik Smoothing Period", group = "Basic Settings")
- phs = input.float(0, "Jurik Phase", group = "Basic Settings")
- inpLevelUp = input.int(100, "Overbought Level", group = "Basic Settings")
- inpLevelDown = input.int(-100, "Oversold Level", group = "Basic Settings")
- colorbars = input.bool(false, "Color bars?", group = "UI Options")
- frama_FC = input.int(defval=1, title="* Fractal Adjusted (FRAMA) Only - FC", group = "Moving Average Inputs")
- frama_SC = input.int(defval=200, title="* Fractal Adjusted (FRAMA) Only - SC", group = "Moving Average Inputs")
- instantaneous_alpha = input.float(defval=0.07, minval = 0, title="* Instantaneous Trendline (INSTANT) Only - Alpha", group = "Moving Average Inputs")
- _laguerre_alpha = input.float(title='* Laguerre Filter (LF) Only - Alpha', minval=0, maxval=1, step=0.1, defval=0.7, group = "Moving Average Inputs")
- lsma_offset = input.int(defval=0, title="* Least Squares Moving Average (LSMA) Only - Offset", group = "Moving Average Inputs")
- _pwma_pwr = input.int(2, '* Parabolic Weighted Moving Average (PWMA) Only - Power', minval=0, group = "Moving Average Inputs")
- 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")
- variant(type, src, len) =>
- sig = 0.0
- trig = 0.0
- special = false
- if type == "ADXvma - Average Directional Volatility Moving Average"
- [t, s, b] = loxxmas.adxvma(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Ahrens Moving Average"
- [t, s, b] = loxxmas.ahrma(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Alexander Moving Average - ALXMA"
- [t, s, b] = loxxmas.alxma(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Double Exponential Moving Average - DEMA"
- [t, s, b] = loxxmas.dema(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Double Smoothed Exponential Moving Average - DSEMA"
- [t, s, b] = loxxmas.dsema(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Exponential Moving Average - EMA"
- [t, s, b] = loxxmas.ema(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Fast Exponential Moving Average - FEMA"
- [t, s, b] = loxxmas.fema(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Fractal Adaptive Moving Average - FRAMA"
- [t, s, b] = loxxmas.frama(src, len, frama_FC, frama_SC)
- sig := s
- trig := t
- special := b
- else if type == "Hull Moving Average - HMA"
- [t, s, b] = loxxmas.hma(src, len)
- sig := s
- trig := t
- special := b
- else if type == "IE/2 - Early T3 by Tim Tilson"
- [t, s, b] = loxxmas.ie2(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Integral of Linear Regression Slope - ILRS"
- [t, s, b] = loxxmas.ilrs(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Instantaneous Trendline"
- [t, s, b] = loxxmas.instant(src, instantaneous_alpha)
- sig := s
- trig := t
- special := b
- else if type == "Laguerre Filter"
- [t, s, b] = loxxmas.laguerre(src, _laguerre_alpha)
- sig := s
- trig := t
- special := b
- else if type == "Leader Exponential Moving Average"
- [t, s, b] = loxxmas.leader(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Linear Regression Value - LSMA (Least Squares Moving Average)"
- [t, s, b] = loxxmas.lsma(src, len, lsma_offset)
- sig := s
- trig := t
- special := b
- else if type == "Linear Weighted Moving Average - LWMA"
- [t, s, b] = loxxmas.lwma(src, len)
- sig := s
- trig := t
- special := b
- else if type == "McGinley Dynamic"
- [t, s, b] = loxxmas.mcginley(src, len)
- sig := s
- trig := t
- special := b
- else if type == "McNicholl EMA"
- [t, s, b] = loxxmas.mcNicholl(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Non-Lag Moving Average"
- [t, s, b] = loxxmas.nonlagma(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Parabolic Weighted Moving Average"
- [t, s, b] = loxxmas.pwma(src, len, _pwma_pwr)
- sig := s
- trig := t
- special := b
- else if type == "Recursive Moving Trendline"
- [t, s, b] = loxxmas.rmta(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Simple Moving Average - SMA"
- [t, s, b] = loxxmas.sma(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Sine Weighted Moving Average"
- [t, s, b] = loxxmas.swma(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Smoothed Moving Average - SMMA"
- [t, s, b] = loxxmas.smma(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Smoother"
- [t, s, b] = loxxmas.smoother(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Super Smoother"
- [t, s, b] = loxxmas.super(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Three-pole Ehlers Butterworth"
- [t, s, b] = loxxmas.threepolebuttfilt(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Three-pole Ehlers Smoother"
- [t, s, b] = loxxmas.threepolesss(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Triangular Moving Average - TMA"
- [t, s, b] = loxxmas.tma(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Triple Exponential Moving Average - TEMA"
- [t, s, b] = loxxmas.tema(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Two-pole Ehlers Butterworth"
- [t, s, b] = loxxmas.twopolebutter(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Two-pole Ehlers smoother"
- [t, s, b] = loxxmas.twopoless(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Volume Weighted EMA - VEMA"
- [t, s, b] = loxxmas.vwema(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Zero-Lag DEMA - Zero Lag Double Exponential Moving Average"
- [t, s, b] = loxxmas.zlagdema(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Zero-Lag Moving Average"
- [t, s, b] = loxxmas.zlagma(src, len)
- sig := s
- trig := t
- special := b
- else if type == "Zero Lag TEMA - Zero Lag Triple Exponential Moving Average"
- [t, s, b] = loxxmas.zlagtema(src, len)
- sig := s
- trig := t
- special := b
- trig
- _emaDev(type, price, period)=>
- alpha = 2.0/(1.0+period)
- wEMAdev0 = price, wEMAdev1 = price
- wEMAdev0 := variant(type, price, period)
- wEMAdev1 := variant(type, price*price, period)
- out = math.sqrt(period*(wEMAdev1 - wEMAdev0 * wEMAdev0) / math.max(period-1, 1))
- out
- _cci(type, src, len, smth, phase)=>
- price = loxxjuriktools.jurik_filt(src, smth, phase)
- avg = loxxjuriktools.jurik_filt(price, len, phase)
- dev = math.max(_emaDev(type, price, len), -2e10)
- val = (dev!=0) ? (price - avg) / (0.015 * dev) : 0.
- val
- middle = 0.
- cci = _cci(maintype, ccisrc, cciper, jsmth, phs)
- colorout =
- cci > middle ? greencolor : redcolor
- plot(inpLevelUp, color = bar_index % 2 ? color.gray : na)
- plot(inpLevelDown, color = bar_index % 2 ? color.gray : na)
- plot(middle, color = bar_index % 2 ? color.gray : na)
- plot(cci, color = colorout, style = plot.style_line, linewidth = 2)
- barcolor(colorbars ? colorout : na)
Advertisement
Add Comment
Please, Sign In to add comment