Hi all,
Please can someone help to convert the following indicator from Algo Alpha:
Range Filtered Trend Signals [AlgoAlpha] — Indicator by AlgoAlpha — TradingView
Hi, here you have:
//-----------------------------------------------------//
//PRC_Range Filtered Trend Signals | indicator
//16.06.2025
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
//translated from tradingview code
//-----------------------------------------------------//
// --- Parámetros de Entrada ---
//-----------------------------------------------------//
// Grupo Filtro Kalman
kalmanAlpha = 0.01
kalmanBeta = 0.1
kalmanPeriod = 77
dev = 1.2
// Grupo Supertrend
supertrendFactor = 0.7
supertrendAtrPeriod = 7
//-----------------------------------------------------//
// --- Lógica del Filtro Kalman ---
//-----------------------------------------------------//
ONCE v2 = 1.0
IF BarIndex <= 1 THEN
v1 = close[1]
else
v3 = kalmanAlpha * kalmanPeriod
v5 = v1
v4 = v2 / (v2 + v3)
v1 = v5 + v4 * (close - v5)
v2 = (1 - v4) * v2 + kalmanBeta / kalmanPeriod
ENDIF
k = v1 // Línea del Filtro Kalman
//-----------------------------------------------------//
// --- Lógica del Supertrend ---
//-----------------------------------------------------//
src=k
atr=averagetruerange[supertrendAtrPeriod]
upperband=src+supertrendFactor*atr
lowerband=src-supertrendFactor*atr
if barindex<=supertrendAtrPeriod then
upperband=src
lowerband=src
direction=1
isupertrend=src
else
if lowerband>lowerband[1] or k[1]<lowerband[1] then
lowerband=lowerband
else
lowerband=lowerband[1]
endif
if upperband<upperband[1] or k[1]>upperband[1] then
upperband=upperband
else
upperband=upperband[1]
endif
if isupertrend[1]=upperband[1] then
if k>upperband then
direction=-1
else
direction=1
endif
else
if k<lowerband then
direction=1
else
direction=-1
endif
endif
if direction=-1 then
isupertrend=lowerband
else
isupertrend=upperband
endif
endif
//-----------------------------------------------------//
// --- Lógica Principal del Indicador ---
//-----------------------------------------------------//
vola = WeightedAverage[200](high - low)
// Bandas del Filtro de Rango
upper = k + vola * dev
lower = k - vola * dev
midbody = (close + open) / 2
//-----------------------------------------------------//
// --- Visualización y Dibujo ---
//-----------------------------------------------------//
rk=124
gk=124
bk=124
ak=255
if close crosses over upper and isupertrend=isupertrend[1] then
r=124
g=124
b=124
a1=255
a2=255
inrange=1
elsif close crosses under lower and isupertrend=isupertrend[1] then
r=124
g=124
b=124
a1=255
a2=255
inrange=1
elsif isupertrend<>isupertrend[1] and k<isupertrend then
r=255
g=0
b=0
a1=255
a2=0
inrange=0
elsif isupertrend<>isupertrend[1] and k>isupertrend then
r=0
g=255
b=0
a1=0
a2=255
inrange=0
endif
if inrange=1 then
ak=0
endif
//-----------------------------------------------------//
colorbetween(k,midbody,r,g,b,ak*0.1)
colorbetween(lower,upper,124,124,124,30*inrange)
//-----------------------------------------------------//
return k as "K" style(line,3)coloured(rk,gk,bk,ak), upper as "Upper" coloured(r,g,b,a1)style(point,2), lower as "Lower" coloured(r,g,b,a2)style(point,2)