PROTECTED SOURCE SCRIPT
My script

// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org/MPL/2.0/
// © AlgoTrade_Pro
//version=5
indicator(title='Twin Range Filter [ATP🤖]', overlay=true, timeframe='')
//Inputs
TRsource = input(defval=close, title='Source')
TRper1 = input.int(defval=27, minval=1, title='Fast period')
TRmult1 = input.float(defval=1.6, minval=0.1, title='Fast range')
TRper2 = input.int(defval=55, minval=1, title='Slow period')
TRmult2 = input.float(defval=2, minval=0.1, title='Slow range')
//Calculations
smoothrng(TRx, TRt, TRm) =>
TRwper = TRt * 2 - 1
TRavrng = ta.ema(math.abs(TRx - TRx[1]), TRt)
TRsmoothrng = ta.ema(TRavrng, TRwper) * TRm
TRsmoothrng
TRsmrng1 = smoothrng(TRsource, TRper1, TRmult1)
TRsmrng2 = smoothrng(TRsource, TRper2, TRmult2)
TRsmrng = (TRsmrng1 + TRsmrng2) / 2
rngfilt(TRx, TRr) =>
TRrngfilt = TRx
TRrngfilt := TRx > nz(TRrngfilt[1]) ? TRx - TRr < nz(TRrngfilt[1]) ? nz(TRrngfilt[1]) : TRx - TRr : TRx + TRr > nz(TRrngfilt[1]) ? nz(TRrngfilt[1]) : TRx + TRr
TRrngfilt
TRfilt = rngfilt(TRsource, TRsmrng)
TRupward = 0.0
TRupward := TRfilt > TRfilt[1] ? nz(TRupward[1]) + 1 : TRfilt < TRfilt[1] ? 0 : nz(TRupward[1])
TRdownward = 0.0
TRdownward := TRfilt < TRfilt[1] ? nz(TRdownward[1]) + 1 : TRfilt > TRfilt[1] ? 0 : nz(TRdownward[1])
TRSTR = TRfilt + TRsmrng
TRSTS = TRfilt - TRsmrng
TRFUB = 0.0
TRFUB := TRSTR < nz(TRFUB[1]) or close[1] > nz(TRFUB[1]) ? TRSTR : nz(TRFUB[1])
TRFLB = 0.0
TRFLB := TRSTS > nz(TRFLB[1]) or close[1] < nz(TRFLB[1]) ? TRSTS : nz(TRFLB[1])
TRTRF = 0.0
TRTRF := nz(TRTRF[1]) == TRFUB[1] and close <= TRFUB ? TRFUB : nz(TRTRF[1]) == TRFUB[1] and close >= TRFUB ? TRFLB : nz(TRTRF[1]) == TRFLB[1] and close >= TRFLB ? TRFLB : nz(TRTRF[1]) == TRFLB[1] and close <= TRFLB ? TRFUB : TRFUB
//Entry Signals
TRlong = ta.crossover(close, TRTRF)
TRshort = ta.crossunder(close, TRTRF)
//Plots
plotshape(TRlong, title='Long', text='BUY', style=shape.labelup, textcolor=color.white, size=size.tiny, location=location.belowbar, color=#1be600)
plotshape(TRshort, title='Short', text='SELL', style=shape.labeldown, textcolor=color.white, size=size.tiny, location=location.abovebar, color=#e60000)
Trfff = plot(TRTRF, color=color.white)
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
longFillColor = close > TRTRF ? color.green : na
shortFillColor = close < TRTRF ? color.red : na
fill(mPlot, Trfff, title='UpTrend Highligter', color=longFillColor, transp=90)
fill(mPlot, Trfff, title='DownTrend Highligter', color=shortFillColor, transp=90)
//Alerts
alertcondition(TRlong, title='Long', message='Long')
alertcondition(TRshort, title='Short', message='Short')
//End
// © AlgoTrade_Pro
//version=5
indicator(title='Twin Range Filter [ATP🤖]', overlay=true, timeframe='')
//Inputs
TRsource = input(defval=close, title='Source')
TRper1 = input.int(defval=27, minval=1, title='Fast period')
TRmult1 = input.float(defval=1.6, minval=0.1, title='Fast range')
TRper2 = input.int(defval=55, minval=1, title='Slow period')
TRmult2 = input.float(defval=2, minval=0.1, title='Slow range')
//Calculations
smoothrng(TRx, TRt, TRm) =>
TRwper = TRt * 2 - 1
TRavrng = ta.ema(math.abs(TRx - TRx[1]), TRt)
TRsmoothrng = ta.ema(TRavrng, TRwper) * TRm
TRsmoothrng
TRsmrng1 = smoothrng(TRsource, TRper1, TRmult1)
TRsmrng2 = smoothrng(TRsource, TRper2, TRmult2)
TRsmrng = (TRsmrng1 + TRsmrng2) / 2
rngfilt(TRx, TRr) =>
TRrngfilt = TRx
TRrngfilt := TRx > nz(TRrngfilt[1]) ? TRx - TRr < nz(TRrngfilt[1]) ? nz(TRrngfilt[1]) : TRx - TRr : TRx + TRr > nz(TRrngfilt[1]) ? nz(TRrngfilt[1]) : TRx + TRr
TRrngfilt
TRfilt = rngfilt(TRsource, TRsmrng)
TRupward = 0.0
TRupward := TRfilt > TRfilt[1] ? nz(TRupward[1]) + 1 : TRfilt < TRfilt[1] ? 0 : nz(TRupward[1])
TRdownward = 0.0
TRdownward := TRfilt < TRfilt[1] ? nz(TRdownward[1]) + 1 : TRfilt > TRfilt[1] ? 0 : nz(TRdownward[1])
TRSTR = TRfilt + TRsmrng
TRSTS = TRfilt - TRsmrng
TRFUB = 0.0
TRFUB := TRSTR < nz(TRFUB[1]) or close[1] > nz(TRFUB[1]) ? TRSTR : nz(TRFUB[1])
TRFLB = 0.0
TRFLB := TRSTS > nz(TRFLB[1]) or close[1] < nz(TRFLB[1]) ? TRSTS : nz(TRFLB[1])
TRTRF = 0.0
TRTRF := nz(TRTRF[1]) == TRFUB[1] and close <= TRFUB ? TRFUB : nz(TRTRF[1]) == TRFUB[1] and close >= TRFUB ? TRFLB : nz(TRTRF[1]) == TRFLB[1] and close >= TRFLB ? TRFLB : nz(TRTRF[1]) == TRFLB[1] and close <= TRFLB ? TRFUB : TRFUB
//Entry Signals
TRlong = ta.crossover(close, TRTRF)
TRshort = ta.crossunder(close, TRTRF)
//Plots
plotshape(TRlong, title='Long', text='BUY', style=shape.labelup, textcolor=color.white, size=size.tiny, location=location.belowbar, color=#1be600)
plotshape(TRshort, title='Short', text='SELL', style=shape.labeldown, textcolor=color.white, size=size.tiny, location=location.abovebar, color=#e60000)
Trfff = plot(TRTRF, color=color.white)
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
longFillColor = close > TRTRF ? color.green : na
shortFillColor = close < TRTRF ? color.red : na
fill(mPlot, Trfff, title='UpTrend Highligter', color=longFillColor, transp=90)
fill(mPlot, Trfff, title='DownTrend Highligter', color=shortFillColor, transp=90)
//Alerts
alertcondition(TRlong, title='Long', message='Long')
alertcondition(TRshort, title='Short', message='Short')
//End
Skrip dilindungi
Skrip ini diterbitkan sebagai sumber tertutup. Akan tetapi, anda boleh menggunakannya dengan percuma dan tanpa had – ketahui lebih lanjut di sini.
Penafian
Maklumat dan penerbitan adalah tidak dimaksudkan untuk menjadi, dan tidak membentuk, nasihat untuk kewangan, pelaburan, perdagangan dan jenis-jenis lain atau cadangan yang dibekalkan atau disahkan oleh TradingView. Baca dengan lebih lanjut di Terma Penggunaan.
Skrip dilindungi
Skrip ini diterbitkan sebagai sumber tertutup. Akan tetapi, anda boleh menggunakannya dengan percuma dan tanpa had – ketahui lebih lanjut di sini.
Penafian
Maklumat dan penerbitan adalah tidak dimaksudkan untuk menjadi, dan tidak membentuk, nasihat untuk kewangan, pelaburan, perdagangan dan jenis-jenis lain atau cadangan yang dibekalkan atau disahkan oleh TradingView. Baca dengan lebih lanjut di Terma Penggunaan.