Las instrucciones dicen https://www.prorealcode.com/documentation/drawrectangle/:
DRAWRECTANGLE(x1,y1,x2,y2) COLOURED(R,V,B,a)
- x1 y x2 son las dos coordenadas de la abscisa (horizontal), por lo que deben indicar las barras desde las que se inicia y finaliza la impresión
- y1 e y1 son las dos coordenadas de la ordenada (vertical), por lo que deben indicar los valores de precio dentro de los cuales se imprimirá, es decir, la esquina inferior izquierda y la esquina superior derecha
- En el centro, antes del color, falta la instrucción STYLE para determinar el tipo de línea y su grosor (https://www.prorealcode.com/documentation/style/)
- Después, se indica el color, que debe estar en formato RGB (Rojo, Verde y Azul); en francés se indica como RVB; la “a” final significa alfa y es un valor entre 0 y 255 que indica visibilidad (0 = invisible, 255 = máxima visibilidad)
- Entre los cuadrados de precio (por ejemplo, HIGH [-1] o LOW[-1]), no debe haber números negativos ni decimales, solo enteros a partir del 1. 0 indica la barra actual, 1 la anterior, 2 la anterior, etc.
- Los indicadores SIEMPRE deben tener la instrucción RETURN como su última línea.
La instrucción correcta es:
DRAWRECTANGLE(barindex - 1, Low, barindex, High) style(line, 4) COLOURED(144, 238, 144, 255)
Si lo deseas también puedes indicar el color interno del rectángulo (el relleno), entonces queda:
DRAWRECTANGLE(barindex - 1, Low, barindex, High) style(line, 4) fillcolor("Red",255) COLOURED(144, 238, 144, 255)
Como puedes ver, los colores también se pueden indicar por su nombre, como se muestra en estas tablas:
https://www.prorealcode.com/documentation/coloured/
https://cloford.com/resources/colours/500col.htm
Este es el código correcto:
// Media móvil simple de 20 periodos
mediaMovil = Average[20](Close)
// Máximos relevantes
maxrelevantes=(High > High[1] AND High[1] > High[2] AND High[2] > High[3] AND High < High[1] AND High[1] < High[2] AND High[2] < High[3])
// Mínimos relevantes
minrelevantes = (Low < Low[1] AND Low[1] < Low[2] AND Low[2] < Low[3] AND Low > Low[1] AND Low[1] > Low[2] AND Low[2] > Low[3])
// Zona 2
zona2 = (maxrelevantes AND minrelevantes AND mediaMovil < High AND mediaMovil < Low)
// Dibujar zona 2
IF zona2 THEN
//DRAWRECTANGLE(barindex - ], Low, barindex, High, "Zona 2") COLOURED(144, 238, 144)
DRAWRECTANGLE(barindex - 1, Low, barindex, High) style(line, 4) fillcolor("Cyan",50) COLOURED(144, 238, 144, 255)
ENDIF
// Zona 4
zona4 = 1//(maxrelevantes AND minrelevantes AND mediaMovil > Low)
// Dibujar zona 4
IF zona4 THEN
//DRAWRECTANGLE(barindex - 1, Low, barindex, High, "Zona 4") COLOURED(255, 182, 193)
DRAWRECTANGLE(barindex - 1, Low, barindex, High) style(line, 4) fillcolor("Green",50) COLOURED(255, 182, 193)
ENDIF
RETURN