MAXiMOS Y MINIMOS CON FRANJAS HORARIAS

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #113499 quote
    Kuku178
    Participant
    New

    Muy buenas.

    Necesito un código que trate varias franjas horarias, por ejemplo de 12:00 a 15:00, otra de 14:00 a 21:00 y otra de 19:00 a 23:30, y extraiga de cada una de ellas los máximos y los mínimos. Trataríamos con maximos y mínimos horarios, para empezar.

    Si pudieran colorearse las zonas ya sea como segmentos, ya sea como bandas verticales, (cada una de un color distinto) mejor. En las zonas de superposición de horarios que se mezclen los colores de esos segmentos o bandas verticales.

    Todo ello para tratar de dilucir la influencia de los diferentes mercados mundiales en el precio.

    He visto que hay algo escrito en el foro:

    // Minimos/Maximos EUR
    
    IF time=180000 THEN
    
    maximoEUR=highest[8](high)
    
    minimoEUR=lowest[8](low)
    
    ENDIF
    
    RETURN maximoEUR as "maximoEUR", minimoEUR as "minimoEUR"

    Pero esto me devuelve una línea continua de máximos y de mínimos, y yo no quiero que se enlacen de forma continua, sino que al acabar el periodo la zona se “cierre” por decirlo de alguna manera. La idea está tratada en este link del 2018 (debajo), pero al ver la fecha de último comentario he pensado en abrir el tema de nuevo, ya que solo se dió un pequeño apunte. En este link, el usuario JJavier, queda pendiente de respuesta…  él envia un attachment donde se ve el resultado que también yo busco.

    https://www.prorealcode.com/topic/indicador-max-y-min-sesiones-asiatica-europea-y-americana/

    Les agradezco su tiempo y dedicación.

    #113507 quote
    robertogozzi
    Moderator
    Master

    ¿Es eso lo que quieres?

    IF time=120000 THEN
       max1=high
       min1=low
    ENDIF
    IF time>=120000 and time <= 150000 THEN
       max1=max(high,max1)
       min1=min(low,min1)
    ENDIF
    //
    IF time=140000 THEN
       max2=high
       min2=low
    ENDIF
    IF time>=140000 and time <= 210000 THEN
       max2=max(high,max2)
       min2=min(low,min2)
    ENDIF
    //
    IF time=190000 THEN
       max3=high
       min3=low
    ENDIF
    IF time>=190000 and time <= 233000 THEN
       max3=max(high,max3)
       min3=min(low,min3)
    ENDIF
    //
    RETURN max1 coloured(255,0,0,255), min1 coloured(255,0,0,255), max2 coloured(0,255,0255), min2 coloured(0,255,0,255), max3 coloured(0,0,255,255), min3 coloured(0,0,255,255)
    #113559 quote
    Kuku178
    Participant
    New

    Muchas gracias Roberto.

    El codigo que me has enviado tiene un par de problemas, el primero que no saca el máximo y mínimo del periodo y logicamente no construye, (con ese maximo y minimo) el rectángulo que voy buscando, sino que va construyendo la zona en base a los maximos y mínimos que va encontrando.

    Y el segundo problema es que no cierra la zona, sino que prolonga las líneas hasta la siguiente ocasión que encuentra la hora de comienzo, dando como resultado una zona intermedia coloreada, fuera del horario restringido.

    Para cerrar la zona horaria he incluido codigo casi igual que el de la entrada que tu has escrito.

    Tambien he tenido que crear un indicador para cada zona horaria ya que un único indicador se liaba.

    Al final, ha quedado medio bien, pero se producen errores. Envio una imagen de como va quedando y algunos errores detectados (rodeados por un círculo), parece que toma el cierre anterior como mínimo cuando el del periodo que está en curso no lo supera.

    Envio el codigo para la franja horaria de 0 h a las 8 de la mañana. Como verás solo he añadido un intento de cierre de la zona, aunque como verás en el gráfico el indicador se prolonga en forma de línea horizontal.

    if time = 000000 then
    maxASIA = high
    minASIA = high
    endif
    
    if time >= 000000 and time <= 80000 then
    maxASIA = max(high, maxASIA)
    minASIA = min(low, minASIA)
    endif
    
    if time = 90000 then
    maxASIA = low
    minASIA = low
    endif
    
    return  maxASIA coloured (0,0,255,255), minASIA coloured (0,0,255,255)

    En fin, no se como podría mejorarse. Desde luego si se consiguiera el máximo y mínimo de la zona completa (un unico valor max y único valor min) la cosa cambiaría.

    #113565 quote
    robertogozzi
    Moderator
    Master

    Pruebe esto, puede seleccionar el tiempo de inicio / finalización (importe el archivo ITF adjunto):

    DEFPARAM DrawOnLastBarOnly = true
    //FromTime = 120000
    //ToTime   = 150000
    IF time=FromTime THEN
       max1=high
       min1=low
       bar1=barindex
    ENDIF
    IF FromTime < ToTime THEN
       IF time>=FromTime and time <= ToTime THEN
          max1=max(high,max1)
          min1=min(low,min1)
          bar2=barindex
       ENDIF
    ELSE
       IF (time>=FromTime and time < 240000) OR (time <= ToTime AND time >= 000000) THEN
          max1=max(high,max1)
          min1=min(low,min1)
          bar2=barindex
       ENDIF
    ENDIF
    DRAWRECTANGLE(Bar1,Min1,Bar2,Max1) COLOURED(0,0,0,0)
    DRAWSEGMENT(Bar1,Min1,Bar2,Min1)   COLOURED(255,0,0,255)
    DRAWSEGMENT(Bar1,Max1,Bar2,Max1)   COLOURED(255,0,0,255)
    RETURN

    solo verás el último rectángulo. Si desea verlos todos, entonces comente la línea 1.

    Puede hacer 2 o tres copias y agregar todo en su gráfico con diferentes configuraciones de tiempo.

    Si necesita ver incluso los rectángulos pasados, entonces necesitamos usar RETURN, pero eso unirá todos los rectángulos (no puede haber agujeros en los datos).

    #113665 quote
    Kuku178
    Participant
    New

    Muchas gracias Roberto.

    Va mas o menos bien para un solo dia, aunque no consigo cambiar el color de relleno del rectángulo, siempre lo pone azul, a pesar de que le he cambiado todos los valores en el COLOURED, en un indicador copia de una temporalidad distinta. Supongo que este azul celeste es por defecto y no se puede cambiar.

    He intentado ponerlo en amarillo:

    DRAWRECTANGLE(Bar1,Min1,Bar2,Max1) COLOURED(255,255,0,100)
    DRAWSEGMENT(Bar1,Min1,Bar2,Min1) COLOURED(255,255,0,0)
    DRAWSEGMENT(Bar1,Max1,Bar2,Max1) COLOURED(255,255,0,0)

    Pero nada.

    Si incluyo los rectángulos pasados no queda bien, marca maximos y mínimos dentro de las zonas…etc.

    No creo que se pueda mejorar mucho mas.

    #113669 quote
    robertogozzi
    Moderator
    Master

    El color del rectángulo no se puede cambiar, solo puede cambiar el borde. V11 permite colorear objetos dibujados.

Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.

MAXiMOS Y MINIMOS CON FRANJAS HORARIAS


ProBuilder: Indicadores y Herramientas

New Reply
Author
author-avatar
Kuku178 @kuku178 Participant
Summary

This topic contains 5 replies,
has 2 voices, and was last updated by robertogozzi
6 years, 2 months ago.

Topic Details
Forum: ProBuilder: Indicadores y Herramientas
Language: Spanish
Started: 11/24/2019
Status: Active
Attachments: 3 files
Logo Logo
Loading...