Buenos días, quería exponer el siguiente problema:
He creado el siguiente código para un indicador que me avise de la existencia de un gap (en este caso, mayor o igual a 4%) en la apertura de sesión diaria con respecto al cierre de la sesión diaria anterior.
La temporalidad es en minutos, y el código coge los valores en el cierre de la vela del minuto 15h 59min de la sesión anterior y en la apertura de la vela del minuto 9h 30min de la sesión del día actual.
Mi problema es el siguiente:
En general el indicador va bien, pero para algunos valores con poco volumen da valores erróneos. Esto me ocurre cuando no hay vela en alguno de estos minutos (15h 59min y/o 9h 30min). Cuando esto ocurre, el indicador da valores erróneos. Tampoco sé muy bien lo que hace en estos casos porque me da valores diversos pero que no se corresponden con la realidad.
Lo que quisiera que el código hiciera es que cuando no existiese vela en el minuto 9h 30min cogiese la vela del minuto 9h 31min y así sucesivamente, pero no sé muy bien como programar esto.
¿Me podéis ayudar?
Gracias anticipadas y un saludo
//Defino el momento de cierre del día anterior (15.59.59) y el momento de apertura del día de hoy (09.30.00):
//Cierre de la vela de las 15.59:
a = (Time = 160000)
//Apertura de la vela de las 9.30
b = (Time = 93100)
IF a THEN
Cierre = Close
ELSIF b THEN
Apertura = Open
ENDIF
IF ABS((Apertura - Cierre) / Cierre) * 100 >= 4 THEN
C1 = (Apertura - Cierre) / Cierre * 100
ELSE
C1 = 0
ENDIF
C2 = 0
RETURN C1 as "Gap", C2 as "0"
Ya sé que es lo que pasa. Cuando no hay vela de apertura coge la de la última sesión donde hubo vela de apertura. Y lo mismo para la vela de cierre.
Aquí está (no lo he probado):
//Defino el momento de cierre del día anterior (15.59.59) y el momento de apertura del día de hoy (09.30.00):
//Cierre de la vela de las 15.59:
a = (Time = 160000)
//Apertura de la vela de las 9.30
b = (Time = 093100)
c = (Time > 093100)
IF a THEN
Cierre = Close
ELSIF b AND Flag = 0 THEN
Apertura = Open
Flag = 1
ELSIF c AND Flag = 0 THEN
Apertura = Open
Flag = 1
ENDIF
IF ABS((Apertura - Cierre) / Cierre) * 100 >= 4 THEN
C1 = (Apertura - Cierre) / Cierre * 100
ELSE
C1 = 0
ENDIF
IF a THEN
Flag = 0
ENDIF
C2 = 0
RETURN C1 as "Gap", C2 as "0"