HOLA BUENOS DIAS, SE PODRIA HACER UN BUSCADOR QUE CUMPLA LAS SIGUIENTES CONDICIONES?
EL PRECIO QUE ESTE A PUNTO DE ROMPER LOS MAXIMOS DE 52 SEMANAS(POR DEBAJO)
Y LAS MEDIAS SIMPLES DE 200, 50,20 Y 8 ALCISTAS , Y ORDENADAS TAL COMO LAS E DESCRITO.
Aquí tienes.
// 1. Máximos anuales
yearlyHigh = Highest[252](High)
// Distancia 2% de maximos
distToHigh = (yearlyHigh - Close) / yearlyHigh
cNearHigh = distToHigh <= 0.02 AND Close < yearlyHigh
// 2. Medias alcistas
sma8 = Average[8](Close)
sma20 = Average[20](Close)
sma50 = Average[50](Close)
sma200 = Average[200](Close)
sma8Up = sma8 > sma8[1]
sma20Up = sma20 > sma20[1]
sma50Up = sma50 > sma50[1]
sma200Up = sma200 > sma200[1]
cMovingAveragesUp = sma8Up AND sma20Up AND sma50Up AND sma200Up
// 3. Medias en orden (8 > 20 > 50 > 200)
cOrdered = sma8 > sma20 AND sma20 > sma50 AND sma50 > sma200
// 4. Filtro final
filter = cNearHigh AND cMovingAveragesUp AND cOrdered
SCREENER[filter] (distToHigh AS "% Dist High")
Esta bien planteado ivan gracias, pero se podria modificar por ejemplo que el precio estuviera sin romper maximos anuales y por ejemplo debajo de 5 sesiones atras, lo de las sesiones que se pudieran cambiar y lo de las medias tal como están, perdon por las molestias….saludos, en la foto muestro un ejemplo
Aquí tienes. Puedes cambiar la primera línea N=5 por lo que quieras.
N = 5
// 1. Máximos anuales
yearlyHigh = Highest[252](High)
// Distancia 2% de maximos
distToHigh = (yearlyHigh - Close) / yearlyHigh
cNearHigh = distToHigh <= 0.02 AND Close < yearlyHigh
cBelowPast = Close < Close[N]
// 2. Medias alcistas
sma8 = Average[8](Close)
sma20 = Average[20](Close)
sma50 = Average[50](Close)
sma200 = Average[200](Close)
sma8Up = sma8 > sma8[1]
sma20Up = sma20 > sma20[1]
sma50Up = sma50 > sma50[1]
sma200Up = sma200 > sma200[1]
cMovingAveragesUp = sma8Up AND sma20Up AND sma50Up AND sma200Up
// 3. Medias en orden (8 > 20 > 50 > 200)
cOrdered = sma8 > sma20 AND sma20 > sma50 AND sma50 > sma200
// 4. Filtro final
filter = cNearHigh AND cMovingAveragesUp AND cOrdered and cBelowPast
SCREENER[filter] (distToHigh AS "% Dist High")
Gracias ivan, haber si cogemos esas empresas a punto de romper, es interesante.