I need to convert an MT4 indicator to PRT. The indicator measure the volatility in a more intelligent mode than the classic indicator so, i think it could be interesting for many users.
The code is released for free.
The indicator contains also some push Alarm feature that can be discarded to the conversion. It is important to respect the flexibility of the configuration parameters because it’s very important to adapt the indicator to the strategy wanted.
Let me know
Thanks
Ciao, puoi incollare il codice qui?
e alcuni screenshot
Here’s the indicator:
//--------------------------------------------
// PRC_Relative Volatility Intelligent Index
// version = 0
// 12.03.2026
// Iván González @ www.prorealcode.com
// Sharing ProRealTime knowledge
//--------------------------------------------
// Parameters:
// volPeriod = StdDev and Wilder averaging period (14)
// volSmooth = Final EMA smoothing period (10)
// flPeriod = Floating levels lookback (50), 0 = fixed levels
// zoneUp = Upper zone (80), zoneDown = Lower zone (20)
// colorMode = 1: slope, 2: middle cross, 3: level cross
//--------------------------------------------
// --- Parameters ---
//--------------------------------------------
volPeriod = 14
volSmooth = 10
flPeriod = 50
zoneUp = 80
zoneDown = 20
colorMode = 3
//--------------------------------------------
// --- Source ---
//--------------------------------------------
src = close
//--------------------------------------------
// --- Standard Deviation ---
//--------------------------------------------
dev = STD[volPeriod](src)
//--------------------------------------------
// --- Directional volatility split ---
//--------------------------------------------
IF barindex > 0 THEN
IF src > src[1] THEN
uVol = dev
dVol = 0
ELSIF src < src[1] THEN
uVol = 0
dVol = dev
ELSE
uVol = 0
dVol = 0
ENDIF
ELSE
uVol = 0
dVol = 0
ENDIF
//--------------------------------------------
// --- Wilder (SMMA) averaging of each side ---
//--------------------------------------------
avgU = WilderAverage[volPeriod](uVol)
avgD = WilderAverage[volPeriod](dVol)
//--------------------------------------------
// --- RVI raw: ratio 0-100 ---
//--------------------------------------------
IF (avgU + avgD) <> 0 THEN
rviRaw = 100 * avgU / (avgU + avgD)
ELSE
rviRaw = 50
ENDIF
//--------------------------------------------
// --- Final EMA smoothing ---
//--------------------------------------------
rviSmooth = ExponentialAverage[volSmooth](rviRaw)
//--------------------------------------------
// --- Floating levels (dynamic OB/OS) ---
// When flPeriod > 0: scale zoneUp/zoneDown within the recent RVI range
// When flPeriod = 0: use zoneUp/zoneDown as fixed values
//--------------------------------------------
IF flPeriod > 0 THEN
hiRvi = highest[flPeriod](rviSmooth)
loRvi = lowest[flPeriod](rviSmooth)
levUp = loRvi + (hiRvi - loRvi) * zoneUp / 100
levDn = loRvi + (levUp - loRvi) * zoneDown / 100
ELSE
levUp = zoneUp
levDn = zoneDown
ENDIF
levMid = (levUp + levDn) / 2
//--------------------------------------------
// --- Trend detection (3 modes) ---
//--------------------------------------------
IF colorMode = 3 THEN
// Level cross: colored above upper / below lower, neutral between
IF rviSmooth > levUp THEN
trd = 1
ELSIF rviSmooth < levDn THEN
trd = -1
ELSE
trd = 0
ENDIF
ELSIF colorMode = 2 THEN
// Middle line cross
IF rviSmooth > levMid THEN
trd = 1
ELSIF rviSmooth < levMid THEN
trd = -1
ELSE
trd = 0
ENDIF
ELSE
// Slope change
IF rviSmooth > rviSmooth[1] THEN
trd = 1
ELSIF rviSmooth < rviSmooth[1] THEN
trd = -1
ELSE
trd = 0
ENDIF
ENDIF
//--------------------------------------------
// --- Colors: green=bullish, red=bearish, gray=neutral ---
//--------------------------------------------
IF trd = 1 THEN
// LimeGreen
rr = 50
gg = 205
bb = 50
ELSIF trd = -1 THEN
// OrangeRed
rr = 255
gg = 69
bb = 0
ELSE
// Neutral silver
rr = 192
gg = 192
bb = 192
ENDIF
//--------------------------------------------
RETURN rviSmooth COLOURED(rr, gg, bb) style(line, 3) AS "RVII", levUp COLOURED(192, 192, 192) style(dottedline, 1) AS "Upper", levMid COLOURED(192, 192, 192) style(dottedline, 1) AS "Middle", levDn COLOURED(192, 192, 192) style(dottedline, 1) AS "Lower"