Hola:
Se podría hacer el Screener correspondiente al indicador que te adjunto, especificando 0 ó 1 para Resistencias o Soportes.
https://www.prorealcode.com/topic/zonas-de-soporte-y-resistencia/
Gracias,
El indicador AverageTrueRange por defecto utiliza un suavizado exponencial (tipo Wilder) que requiere un histórico de datos muy superior al periodo definido para estabilizarse. En la versión básica de ProScreener, que carga 256 velas, un ATR de 200 periodos devolvería resultados nulos o incorrectos porque no tiene suficiente “arrastre” de datos previos.
Para solucionar esto y mantener la lógica del indicador, he adaptado el código utilizando una Media Móvil Simple del Rango Verdadero.
// PARÁMETROS
length = 130
// CÁLCULO DEL ATR ADAPTADO (Media Simple)
// Calculamos el True Range (Rango Verdadero)
// Usamos la instrucción TR que ya existe en el sistema
myTrueRange = TR(close)
// Calculamos el promedio simple de ese rango en 200 periodos
// Al ser media simple, solo consume 200 barras exactas + 1 para el TR
myATR = Average[200](myTrueRange) * 0.5
// CÁLCULO DE NIVELES (Igual que antes)
maxVal = HIGHEST[length](high)
minVal = LOWEST[length](low)
// Definición de los límites de las zonas
topOfSupport = minVal + myATR
bottomOfResistance = maxVal - myATR
// LÓGICA DE DETECCIÓN
zoneType = 0
// Comprobamos Resistencia
IF high >= bottomOfResistance THEN
zoneType = 1
ENDIF
// Comprobamos Soporte
IF low <= topOfSupport THEN
zoneType = 2
ENDIF
// FILTRO Y PANTALLA
SCREENER[zoneType > 0](zoneType AS "1=Res 2=Sup")
Visto por arriba el funcionamiento me parece bastante correcto, pues incluso en intradía creo que da buenos resultados, es un poco lo que andaba buscando.
Seguiré comprobando que es lo que da de si.
Gracias de nuevo,