Zona 2 y zona 4
Forums › ProRealTime foro Español › Soporte ProBuilder › Zona 2 y zona 4
- This topic has 17 replies, 3 voices, and was last updated 1 month ago by
Roberto Cifre.
-
-
05/29/2025 at 6:17 PM #247733
Como veis estoy aprendiendo a hacer los programas porque tengo que tener una utilidad mayor en los gráficos
Quiero crear un indicador para ver las zonas 2 alcista y 4 bajista del ciclo de vida de la acción
Mi planteamiento es este aunque con errores
Si lo podéis corregir estaré muy agradecido
/ Media móvil simple de 20 periodos
mediaMovil = Average[20](Close)IF
// 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)// Zona 4
zona4 = (minrelevantes AND mediaMovil > Low)// Dibujar zona 2
IF zona2 THEN
DRAWRECTANGLE(barindex – 1, Low, barindex, High, “Zona 2”, RGB(144, 238, 144), 50)
END IF// Dibujar zona 4
IF zona4 THEN
DRAWRECTANGLE(barindex – 1, Low, barindex, High, “Zona 4”, RGB(255, 182, 193), 50)
ENDIFGracias
05/30/2025 at 11:07 AM #247746Como se puede ver en la foto inundada:
- En la línea 1 falta una barra diagonal inicial (se necesitan dos barras diagonales, //, para los comentarios).
- En la línea 4 falta la condición seguida de “THEN” (puede haber más condiciones, pero siempre solo un “IF” al principio y un “THEN” al final de la línea).
- En la línea 18 la instrucción gráfica es incorrecta (consulte los detalles en https://www.prorealcode.com/documentation/drawrectangle/).
- En la línea 19, “ENDIF” es una sola palabra.
- En la línea 23, se indica lo mismo para la línea 18.
1 user thanked author for this post.
05/30/2025 at 1:17 PM #247754Roberto gracias pero no he podido con el rectángulo
// 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)
ENDIF// Zona 4
zona4 = (maxrelevantes AND minrelevantes AND mediaMovil > Low)// Dibujar zona 4
IF zona4 THEN
DRAWRECTANGLE(barindex – 1, Low, barindex, High, “Zona 4”) COLOURED(255, 182, 193)ENDIF
05/30/2025 at 4:55 PM #247758Las instrucciones dicen https://www.prorealcode.com/documentation/drawrectangle/:
1DRAWRECTANGLE(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:
1DRAWRECTANGLE(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:
1DRAWRECTANGLE(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:
123456789101112131415161718192021222324252627// Media móvil simple de 20 periodosmediaMovil = Average[20](Close)// Máximos relevantesmaxrelevantes=(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 relevantesminrelevantes = (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 2zona2 = (maxrelevantes AND minrelevantes AND mediaMovil < High AND mediaMovil < Low)// Dibujar zona 2IF 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 4zona4 = 1//(maxrelevantes AND minrelevantes AND mediaMovil > Low)// Dibujar zona 4IF 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)ENDIFRETURN1 user thanked author for this post.
05/30/2025 at 5:04 PM #247759Para imprimir texto es necesario utilizar la instrucción DRAWTEXT (https://www.prorealcode.com/documentation/drawtext/).
Este código también contiene el texto impreso, ENCIMA del triángulo:
12345678910111213141516171819202122232425262728// Media móvil simple de 20 periodosmediaMovil = Average[20](Close)// Máximos relevantesmaxrelevantes=(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 relevantesminrelevantes = (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 2zona2 = (maxrelevantes AND minrelevantes AND mediaMovil < High AND mediaMovil < Low)// Dibujar zona 2IF 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)DRAWTEXT("Zona 2",barindex - 1, High + Range,SansSerif,Bold,13) coloured(144, 238, 144, 255)ENDIF// Zona 4zona4 = (maxrelevantes AND minrelevantes AND mediaMovil > Low)// Dibujar zona 4IF 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)DRAWTEXT("Zona 4",barindex - 1, High + Range,SansSerif,Bold,13) coloured(255, 182, 193)ENDIFRETURNComo puede ver, DRAWTEXT no quiere la declaración STYLE, ya que la fuente, el formato y el tamaño del texto son internos a la declaración en sí.
1 user thanked author for this post.
05/30/2025 at 8:58 PM #247760Roberto no entiendo porqué el high del máximo relevante es mayor que el máximo de la vela anterior [1] y al mismo tiempo es menor
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])
Perdona pero soy principiante
Gracias
05/31/2025 at 10:17 AM #247770Eliminé todos los errores de sintaxis, así que eliminé los valores negativos de la fórmula incorrecta que publicaste, pero no abordé su función.
Si me das los detalles de lo que necesitas hacer con esa fórmula, puedo intentar ayudarte.05/31/2025 at 10:25 AM #247771Roberto
Busco máximos relevantes que son los que tienen máximos a la izquierda más bajos y máximos a la derecha más bajos, aunque entre ellos pueden ser crecientes o decrecientes, no importa
Lo mismo para mínimos decrecientes: la única condición es que existan 3 mínimos a la izquierda más altos y 3 mínimos a la derecha más altos, entre ellos (que no son los relevantes) pueden estar más altos o más bajos da lo mismo
Si puedes por unas cruces negras encima de los máximos relevantes y unas cruces negras arriba de los mínimos relevantes pegados al punto en la gráfica
Un saludo y gracias por tu ayuda
06/02/2025 at 8:39 AM #247791buenas. Para detectar maximos y minimos relevantes puedes utilizar el codigo siguiente: https://www.prorealcode.com/topic/detection-swing/
06/02/2025 at 3:45 PM #247813Buenas tardes Iván he visto el código en francés y es muy bueno.
Te lo dejo aquí por si falta alguna sintaxis para ejecutarlo en ProRealTime
Quito las entradas tipo REM y pongo el código en esqueleto
Muchas gracias Iván, eres un crack
—————————————————————————————
input LookbackLeft = 5 // Nombre de bougies à gauche à comparer (X)
input LookbackRight = 5 // Nombre de bougies à droite à comparer (Y)
SwingHighDetected = 1
FOR i = 1 TO LookbackLeft
IF high[0] <= high[i] THEN SwingHighDetected = 0BREAK
ENDIF
NEXT
IF SwingHighDetected THEN
FOR i = 1 TO LookbackRight
IF high[0] <= high[-i] THEN
SwingHighDetected = 0
BREAK
ENDIF
NEXT
ENDIF
SwingLowDetected = 1
FOR i = 1 TO LookbackLeft
IF low[0] >= low[i] THEN
SwingLowDetected = 0
BREAK
ENDIF
NEXTIF SwingLowDetected THEN
FOR i = 1 TO LookbackRight
IF low[0] >= low[-i] THEN
SwingLowDetected = 0
BREAK
ENDIF
NEXT
ENDIFIF SwingHighDetected THEN
DRAWSHAPE (high + 0.0005) AS “Square” AT BARINDEX COLOUR (255,0,0)DRAWTEXT (“SH”) AT BARINDEX ON SwingHighDetected
ENDIF
IF SwingLowDetected THEN
DRAWSHAPE (low – 0.0005) AS “Square” AT BARINDEX COLOUR (0,255,0)DRAWTEXT (“SL”) AT BARINDEX ON SwingLowDetected
ENDIFRETURN————————————————————————————————————————–Por favor míralo y corrige la sintaxis. Me he hecho un poco de lío con los BREAK – ENDIF – NEXT. Gracias06/03/2025 at 8:33 AM #247832Buenas! Pero no has cogido mi código… has cogido el código del usuario que no era funcional…
Este código te permite detectar pivots high y low.123456789101112131415161718192021LookbackLeft = 5LookbackRight = 5// pivot lowpl1=low>low[lookbackright]pl2=low[lookbackright]<=lowest[lookbackright](low)pl3=low[lookbackright]<lowest[LookbackLeft](low)[LookbackRight+1]if pl1 and pl2 and pl3 thendrawpoint(barindex[lookbackright],low[lookbackright],3)coloured("red")endif// pivot highph1=high<high[lookbackright]ph2=high[lookbackright]>=highest[lookbackright](high)ph3=high[lookbackright]>highest[LookbackLeft](high)[LookbackRight+1]if ph1 and ph2 and ph3 thendrawpoint(barindex[lookbackright],high[lookbackright],3)coloured("blue")endifreturn06/04/2025 at 3:50 PM #247891Hola Iván el código tuyo está muy bien, me olvido del francés, pero lo que pretendo es otra cosa.
Como sabes toda acción en su recorrido tiene cuatro etapas que son repetitivas
La segunda tiene máximos relevantes crecientes y mínimos relevantes crecientes y se encuentra por encima de las dos medias móviles de 20 y 40 periodos
Lo importante es saber la vela que comienza la zona 2 porque si tu “parabolic RSI” también lo indica podemos hacer una entrada en largo (compra) porque el precio está al principio de una etapa 2 y va a subir seguro
Por lo tanto el indicador que pretendo hacer es muy importante combinado con tu indicador y el “volume profile”
Lo que pretendo es conocer la vela donde comienza cada etapa y que se fije en el gráfico o también la zona coloreada donde estén las velas de cada zona (que abarque toda la zona hasta arriba del gráfico, no un cuadrado que incluya cada vela)
Te paso unos ejemplos del DAX y del IBEX 35 para que veas lo que pretendo
Si lo incluidos en PRT nos ayudaría muchísimo
Lo interesante es hacer las etapas 2 y 4 que son las que vamos a operar. Ahora si también se incluyen las otras dos mucho mejor
Pienso que es importante trabajar sobre este indicador y gracias por hacerlo, ayudándome mucho
Luego te mandaré fotos
06/04/2025 at 4:08 PM #247894Aquí están las fotos del indicador donde figuran las zonas 1-2-3-4 en la vela donde comienzan
06/05/2025 at 7:54 AM #247919Buenas. Creo que este indicador podría ayudarte y darte pistas para programar lo que estás buscando. https://www.prorealcode.com/prorealtime-indicators/smart-money-concepts-smc-indicator/
06/05/2025 at 11:40 AM #247947Creo que este indicador para detectar tendencias 1 a la 4 puede estar bien, ahora lo he probado en PRT y da errores.
¿Puedes verificar esto cuando tengas tiempo (después de tu vuelta de Madrid a la convención económica de los días 6-7-8 de junio).
Gracias
-
AuthorPosts