Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=5
- // Copyright (c) 2018-present, Alex Orekhov (everget)
- // Ehlers Reverse Exponential Moving Average script may be freely distributed under the MIT license.
- indicator('Ehlers Reverse Exponential Moving Average', shorttitle='EREMA')
- trendAlpha = input(title='Trend Alpha', defval=0.05)
- cycleAlpha = input(title='Cycle Alpha', defval=0.3)
- src = input(title='Source', defval=close)
- erema(src, alpha) =>
- delta = 1 - alpha
- ema = 0.0
- ema := alpha * src + delta * nz(ema[1])
- // Compute Reverse EMA
- re1 = delta * ema + nz(ema[1])
- re2 = math.pow(delta, 2) * re1 + nz(re1[1])
- re3 = math.pow(delta, 4) * re2 + nz(re2[1])
- re4 = math.pow(delta, 8) * re3 + nz(re3[1])
- re5 = math.pow(delta, 16) * re4 + nz(re4[1])
- re6 = math.pow(delta, 32) * re5 + nz(re5[1])
- re7 = math.pow(delta, 64) * re6 + nz(re6[1])
- re8 = math.pow(delta, 128) * re7 + nz(re7[1])
- erema = ema - alpha * re8
- erema
- eremaTrend = erema(src, trendAlpha)
- eremaTrendColor = #674ea7
- eremaCycle = erema(src, cycleAlpha)
- eremaCycleColor = eremaCycle > 0 ? #0ebb23 : color.red
- eremaTrendPlot = plot(eremaTrend, title='Trend', linewidth=2, color=color.new(eremaTrendColor, 0))
- eremaCyclePlot = plot(eremaCycle, title='Cycle', linewidth=2, color=eremaCycleColor, transp=0)
- color_1 = color.new(color.white, 100)
- fillColor = eremaTrend >= 0 and eremaCycle >= 0 ? #0ebb23 : eremaTrend < 0 and eremaCycle < 0 ? color.red : color_1
- fill(eremaTrendPlot, eremaCyclePlot, color=fillColor, transp=80)
- hline(0, title='Zero Level', linestyle=hline.style_dotted, color=#989898)
Advertisement
Add Comment
Please, Sign In to add comment