Hola,
Estoy intentando hacer un screener que calcule el porcentaje entre el mínimo y el máximo de cada vela y ademas que cumpla la condición de que las 5 últimas velas ya cerradas (la que esta formandose no) tengan todas un tamaño menor o del 3%.
Estoy con este código, pero el resultado que me da no es correcto.
¿podrian decirme que me falta?
Muchas gracias
maximo = DHigh(5)
minimo = DLow(5)
variacion = (((maximo / minimo) – 1) * 100)
c1 = (variacion < 3)
SCREENER[c1](variacion AS “Variacion”)
El problema con tu código es que estás utilizando las funciones DHigh(5) y DLow(5), que devuelven el máximo y el mínimo de los últimos 5 días, en lugar de calcular el porcentaje de variación entre el máximo y el mínimo de cada una de las últimas 5 velas ya cerradas individualmente. Además, la condición que has puesto verifica el porcentaje de las 5 velas en conjunto, pero necesitas verificar que cada una de las 5 velas tenga un rango menor o igual al 3%.
Este es un screener que hace lo que buscas:
// Variables
cumpleCondicion = 1 // Inicializamos la variable de verificación
// Iterar sobre las últimas 5 velas cerradas
FOR i = 1 TO 5 DO
maximo = High[i]
minimo = Low[i]
variacion = ((maximo - minimo) / minimo) * 100 // Cálculo del porcentaje de variación
// Verificar si la variación es mayor al 3%
IF variacion > 3 THEN
cumpleCondicion = 0 // Si alguna vela supera el 3%, no cumple la condición
ENDIF
NEXT
// Definir la condición para el screener
c1 = (cumpleCondicion = 1)
SCREENER[c1]
El código itera sobre las últimas 5 velas cerradas (índices 1 a 5).
Calcula la variación porcentual de cada vela y verifica si supera el 3%.
Si alguna vela supera el 3%, la variable cumpleCondicion se establece en 0.
Finalmente, el screener solo muestra resultados cuando la condición se cumple para las 5 velas.
Te dejo además un indicador para que verfiques los resultados:
// Variables
cumpleCondicion = 1 // Inicializamos la variable de verificación
// Iterar sobre las últimas 5 velas cerradas
FOR i = 1 TO 5 DO
maximo = High[i]
minimo = Low[i]
variacion = ((maximo - minimo) / minimo) * 100 // Cálculo del porcentaje de variación
// Verificar si la variación es mayor al 3%
IF variacion > 3 THEN
cumpleCondicion = 0 // Si alguna vela supera el 3%, no cumple la condición
ENDIF
NEXT
var=(high-low)/low*100
// Definir la condición para el screener
c1 = (cumpleCondicion = 1)
return var as "VAR%" coloured("blue"), 0 as "Zero",3 as "3%"coloured("red"), c1 as "cumple" style(histogram)coloured("green")
Muchisimas gracias,
Funciona perfectamente y además se ha molestado en añadir un indicador.
No puedo estar mas agradecido, ha sido muy amable y rápido en contestar.
Gracias.