Buenos días, deseo obtener el ProScreener del indicador Elliott Wave publicado recientemente por Iván, en concreto deseo que me avise cuando llega a la línea azul o de entrada, gracias de antemano.
//-------------------------------------------
// Screener: Elliott Wave - Impulse v2 (Optimizado)
// 26.02.2026
// Iván González @ www.prorealcode.com
//-------------------------------------------
// --- Inputs ---
zigzagLength = 10
errorPercent = 5
entryPercent = 30
// --- Constants ---
errMin = (100 - errorPercent) / 100
errMax = (100 + errorPercent) / 100
entryRatio = entryPercent / 100
// ==============================================
// DETECCION DE PIVOTS (HighestBars/LowestBars)
// ==============================================
IF barindex >= zigzagLength THEN
hb = highestbars[zigzagLength](high)
lb = lowestbars[zigzagLength](low)
IF hb = 0 AND lb <> 0 THEN
phigh = high
plow = 0
dir = 1
ELSIF lb = 0 AND hb <> 0 THEN
phigh = 0
plow = low
dir = -1
ELSIF hb = 0 AND lb = 0 THEN
phigh = high
plow = low
dir = prevDir
ELSE
phigh = 0
plow = 0
dir = prevDir
ENDIF
hasPivot = 0
IF phigh <> 0 OR plow <> 0 THEN
hasPivot = 1
ENDIF
IF hasPivot THEN
IF dir = 1 THEN
newVal = high
ELSE
newVal = low
ENDIF
newPDir = dir
dirChanged = 0
IF dir <> prevDir AND prevDir <> 0 THEN
dirChanged = 1
ENDIF
// --- MISMA DIRECCION ---
IF dirChanged = 0 AND pCount >= 1 THEN
IF dir = 1 THEN
IF newVal < pvt0 THEN
newVal = pvt0
ENDIF
ELSE
IF newVal > pvt0 THEN
newVal = pvt0
ENDIF
ENDIF
IF pCount >= 3 THEN
IF dir = 1 AND newVal > pvt2 THEN
newPDir = 2
ELSIF dir = -1 AND newVal < pvt2 THEN
newPDir = -2
ENDIF
ENDIF
pvt0 = newVal
pd0 = newPDir
ELSE
// --- CAMBIO DE DIRECCION: shift FIFO e insertar ---
IF pCount >= 2 THEN
IF dir = 1 AND newVal > pvt1 THEN
newPDir = 2
ELSIF dir = -1 AND newVal < pvt1 THEN
newPDir = -2
ENDIF
ENDIF
pvt3 = pvt2
pvt2 = pvt1
pd2 = pd1
pvt1 = pvt0
pd1 = pd0
pvt0 = newVal
pd0 = newPDir
IF pCount < 6 THEN
pCount = pCount + 1
ENDIF
ENDIF
prevDir = dir
ENDIF
// ==============================================
// DETECCION DE ONDA IMPULSO
// ==============================================
IF pCount >= 4 THEN
p2 = pvt1
p2dir = pd1
p1 = pvt2
p1dir = pd2
p0 = pvt3
w1Len = abs(p1 - p0)
w2Len = abs(p2 - p1)
IF w1Len > 0 THEN
ir2 = w2Len / w1Len
ELSE
ir2 = 0
ENDIF
ignore = 0
IF oldP0 = p0 AND oldP1 = p1 AND oldP2 = p2 THEN
ignore = 1
ENDIF
patternMatched = 0
IF ir2 > 0.50 * errMin AND ir2 < 0.50 * errMax THEN
patternMatched = 1
ENDIF
IF ir2 > 0.618 * errMin AND ir2 < 0.618 * errMax THEN
patternMatched = 1
ENDIF
IF ir2 > 0.764 * errMin AND ir2 < 0.764 * errMax THEN
patternMatched = 1
ENDIF
IF ir2 > 0.854 * errMin AND ir2 < 0.854 * errMax THEN
patternMatched = 1
ENDIF
dirMatched = 0
IF (p1dir = 2 AND p2dir = -1) OR (p1dir = -2 AND p2dir = 1) THEN
dirMatched = 1
ENDIF
IF ignore = 0 AND patternMatched = 1 AND dirMatched = 1 THEN
IF p0 > p1 THEN
wDirection = -1
ELSE
wDirection = 1
ENDIF
wEntry = p2 + wDirection * entryRatio * w2Len
oldP0 = p0
oldP1 = p1
oldP2 = p2
waveEver = 1
ENDIF
ENDIF
ENDIF
// ==============================================
// CONDICION DE ALERTA (CRUCE CON LINEA DE ENTRADA)
// ==============================================
condBull = 0
condBear = 0
IF waveEver = 1 THEN
IF wDirection = 1 AND close CROSSES OVER wEntry THEN
condBull = 1
ELSIF wDirection = -1 AND close CROSSES UNDER wEntry THEN
condBear = 1
ENDIF
ENDIF
SCREENER[condBull OR condBear] (wDirection AS "1=Alcista, -1=Bajista")