voici:
// ---------------------------------------------//
// PRC_Ichimoku Oscillator (BY LonesomeTheBlue)
//version = 0
//26.08.2025
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
// ---------------------------------------------//
// --- PARÁMETROS CONFIGURABLES ---
conversionPeriods = 8
basePeriods = 13
laggingSpan2Periods = 26
displacement = 13
useatr = 1
atrlen = 9
atrmul = 2.0
bounceoff = 1
useema = 1
emalen = 9
ematkpartprft = 1
bgcolupI = 1 // 1=Verde, 2=Rojo, 3=Azul
bgcoldnI = 3 // 1=Verde, 2=Rojo, 3=Azul
bgtransp = 60
// --- CÁLCULOS ICHIMOKU ---
highestConv = HIGHEST[conversionPeriods](High)
lowestConv = LOWEST[conversionPeriods](Low)
conversionLine = (lowestConv + highestConv) / 2
highestBase = HIGHEST[basePeriods](High)
lowestBase = LOWEST[basePeriods](Low)
baseLine = (lowestBase + highestBase) / 2
leadLine1 = (conversionLine + baseLine) / 2
highestLagging = HIGHEST[laggingSpan2Periods](High)
lowestLagging = LOWEST[laggingSpan2Periods](Low)
leadLine2 = (lowestLagging + highestLagging) / 2
// --- CÁLCULO DEL OSCILADOR ---
CloudMin = MIN(leadLine1[displacement - 1], leadLine2[displacement - 1])
CloudMax = MAX(leadLine1[displacement - 1], leadLine2[displacement - 1])
inthecloud = (close >= CloudMin AND close <= CloudMax)
IF close > CloudMax THEN
mtrend = 1
ELSIF close < CloudMin THEN
mtrend = -1
ENDIF
// CAPA 1: Oscline
IF mtrend = 1 THEN
Oscline = (close - CloudMin)
ELSE
Oscline = (close - CloudMax)
ENDIF
// CAPA 2: Lagging
laggingComponent = 0
IF mtrend = 1 THEN
laggingComponent = MAX(close - CloudMax[displacement - 1], 0)
ELSE
laggingComponent = MIN(close - CloudMin[displacement - 1], 0)
ENDIF
Lagging = Oscline + laggingComponent
// CAPA 3: Conversion/Base
convBaseComponent = 0
IF mtrend = 1 THEN
convBaseComponent = MAX((conversionLine - baseLine), 0)
ELSE
convBaseComponent = MIN((conversionLine - baseLine), 0)
ENDIF
ConvBase = Lagging + convBaseComponent
// CAPA 4: Cloud
cloudComponent = 0
IF mtrend = 1 THEN
cloudComponent = MAX(leadLine1 - leadLine2, 0)
ELSE
cloudComponent = MIN(leadLine1 - leadLine2, 0)
ENDIF
cloud = ConvBase + cloudComponent
// --- LÓGICA DE TENDENCIA ---
anyofthemrising = (conversionLine > conversionLine[1]) OR (baseLine > baseLine[1])
anyofthemfalling = (conversionLine < conversionLine[1]) OR (baseLine < baseLine[1])
convoverbase = conversionLine >= baseLine
baseoverconv = conversionLine <= baseLine
tole = 0
IF useatr = 1 THEN
tole = AverageTrueRange[atrlen] * atrmul
ENDIF
IF mtrend = 1 THEN
IF mtrend[1] = -1 THEN
trend = 0
ENDIF
IF trend < 4 AND close > CloudMax THEN
newTrend = 1
IF Lagging > Oscline THEN
newTrend = newTrend + 1
ENDIF
IF convoverbase AND anyofthemrising THEN
newTrend = newTrend + 1
ENDIF
IF leadLine1 >= leadLine2 THEN
newTrend = newTrend + 1
ENDIF
trend = newTrend - 1
ELSIF conversionLine < baseLine - tole THEN
trend = 0
ENDIF
ELSIF mtrend = -1 THEN
IF mtrend[1] = 1 THEN
trend = 0
ENDIF
IF trend > -4 AND close < CloudMin THEN
newTrend = -1
IF Lagging < Oscline THEN
newTrend = newTrend - 1
ENDIF
IF baseoverconv AND anyofthemfalling THEN
newTrend = newTrend - 1
ENDIF
IF leadLine1 <= leadLine2 THEN
newTrend = newTrend - 1
ENDIF
trend = newTrend + 1
ELSIF conversionLine > baseLine + tole THEN
trend = 0
ENDIF
ENDIF
IF trend = 3 AND trend[1] <> 3 THEN
entrylevel = close
ELSIF trend = -3 AND trend[1] <> -3 THEN
entrylevel = close
ENDIF
// --- DIBUJO DE LAS ÁREAS DEL OSCILADOR CON COLORBETWEEN ---
// CAPA 4: Cloud
IF mtrend = 1 THEN
rcap4 = 0
gcap4 = 70
bcap4 = 0
ELSE
rcap4 = 70
gcap4 = 0
bcap4 = 0
ENDIF
COLORBETWEEN(0, cloud, rcap4, gcap4, bcap4, 255)
// CAPA 3: ConvBase
IF conversionLine >= baseLine THEN
rcap3 = 0
gcap3 = 130
bcap3 = 0
ELSE
rcap3 = 130
gcap3 = 0
bcap3 = 0
ENDIF
COLORBETWEEN(0, ConvBase, rcap3, gcap3, bcap3, 255)
// CAPA 2: Lagging
acap2 = 0 // alpha a 0 por defecto (transparente)
IF close > CloudMax THEN
rcap2 = 0
gcap2 = 190
bcap2 = 0
acap2 = 255
ELSIF close < CloudMin THEN
rcap2 = 190
gcap2 = 0
bcap2 = 0
acap2 = 255
ENDIF
IF acap2 > 0 THEN // Solo dibuja si hay color que aplicar
COLORBETWEEN(0, Lagging, rcap2, gcap2, bcap2, acap2)
ENDIF
// CAPA 1: Oscline
IF inthecloud THEN
rcap1 = 209
gcap1 = 212
bcap1 = 220
ELSIF close > CloudMax THEN
rcap1 = 0
gcap1 = 250
bcap1 = 0
ELSE // close < CloudMin
rcap1 = 250
gcap1 = 0
bcap1 = 0
ENDIF
COLORBETWEEN(0, Oscline, rcap1, gcap1, bcap1, 255)
// --- CÁLCULO DE SEÑALES ---
closetrade = 0
IF (trend <> trend[1]) AND (ABS(trend[1]) = 3) THEN
IF trend[1] > 0 THEN
closetrade = 1
ELSE
closetrade = -1
ENDIF
ENDIF
uptrendSignal = 0
downtrendSignal = 0
IF trend = 3 AND trend[1] <> 3 THEN
uptrendSignal = 1
ENDIF
IF trend = -3 AND trend[1] <> -3 THEN
downtrendSignal = -1
ENDIF
bouncbackup = 0
bouncbackdn = 0
IF bounceoff = 1 THEN
IF trend = 3 AND close > CloudMax AND inthecloud[1] THEN
bouncbackup = 1
ENDIF
IF trend = -3 AND close < CloudMin AND inthecloud[1] THEN
bouncbackdn = -1
ENDIF
ENDIF
partclose = 0
profitable = (trend = 3 AND close > entrylevel) OR (trend = -3 AND close < entrylevel)
IF profitable THEN
emaline = ExponentialAverage[emalen](cloud)
basecrosscons = baseLine CROSSES UNDER conversionLine
emacrosscloud = emaline CROSSES OVER cloud
convcrossbase = conversionLine CROSSES OVER baseLine
cloudcrossema = cloud CROSSES OVER emaline
IF (trend = 3 AND basecrosscons) OR (trend = 3 AND emacrosscloud AND ematkpartprft=1) THEN
partclose = 1
ENDIF
IF (trend = -3 AND convcrossbase) OR (trend = -3 AND cloudcrossema AND ematkpartprft=1) THEN
partclose = -1
ENDIF
ENDIF
// --- COLOR DE FONDO ---
alphaBG = 100 - bgtransp
uptmult = 159 + POW(trend, 3)
dntmult = 159 + POW(ABS(trend), 3)
rup = 0
gup = 0
bup = 0
rdn = 0
gdn = 0
bdn = 0
IF bgcolupI = 1 THEN
gup = uptmult
ELSIF bgcolupI = 2 THEN
rup = uptmult
ELSE
bup = uptmult
ENDIF
IF bgcoldnI = 1 THEN
gdn = dntmult
ELSIF bgcoldnI = 2 THEN
rdn = dntmult
ELSE
bdn = dntmult
ENDIF
IF trend > 0 THEN
BACKGROUNDCOLOR(rup, gup, bup, alphaBG)
ELSif trend < 0 then
BACKGROUNDCOLOR(rdn, gdn, bdn, alphaBG)
else
BACKGROUNDCOLOR("grey", alphaBG)
ENDIF
// --- SALIDA DE DATOS ---
emalineFinal = UNDEFINED
IF useema = 1 THEN
emalineFinal = ExponentialAverage[emalen](cloud)
ENDIF
RETURN emalineFinal AS "EMA", cloud coloured(rcap4,gcap4,bcap4), ConvBase coloured(rcap3,gcap3,bcap3), lagging coloured(rcap2,gcap2,bcap2), oscline coloured(rcap1,gcap1,bcap1)style(histogram)//, uptrendSignal AS "BuySignal", downtrendSignal AS "SellSignal", bouncbackup+bouncbackdn AS "AddSignal", closetrade AS "CloseSignal", partclose AS "PartialCloseSignal"