Bueno, Hermo, a ver si te doy un empujón.
De antemano te digo que lo de dos compresiones horarias en el mismo gráfico / sistema, como creo que habías visto, parece que solo se pude hacer si programas directamente en Visaul Basic, no mediante el PDV:
http://blog.visualchart.com/2011/11/uti ... en-un.html
Tendrás que buscar alternativas.
Vamos con el remake de tu sistema obviando esa limitación:
* Hay cosas de lo que pretendes que no me encajan o no las entiendo. He intentado transformar lo que no tenía lógica de programación, en algo con una mínima coherencia dentro de lo que creo quieres hacer, pero quizá siga sin tener mucho sentido. No obstante, si sacas conclusiones, te servirá para aclarar conceptos.
* El TrixData "anterior" que se considera, bien por almacenamiento en variable, o bien por llamada a valor anterior del indicador, es el de la barra inmeiatamente anterior a la actual, que creo es lo que querías.
* Si HoraSalida < HoraFinal, no tenía sentido tener el control de HoraFinal dentro del de HoraSalida, porque no se haría nunca más allá de ésta, dime si entiendes la diferencia; a las 19h tu estabas queriendo hacer un control con el condicional Tiempo = HoraFinal que no se iba a hacer nunca, porque en cuanto sean más de las 17'30, tu sistema dejaba de funcionar. Para que haga algo más allá, hay que ponerlo a la salida negativa del control Tiempo < HoraSalida, ¿lo entiendes?.
* Una vez que Tiempo = HoraFinal lo tenemos fuera, lo que se hacía con ese control, tampoco tiene sentido: en cuanto el bloque de comprar, comprara, a la barra siguiente se te iba a cerrar el negocio (saldría por el negativo de Tiempo = HoraFinal).
* El control GetMarketPosition = 0, no hace falta. Si ya está comprado, no te va a abrir un nuevo negocio.
* También se podría prescindir en este caso del GetMarketPosition = 1, porque si no estás comprado, no te va a cerrar nada, y como no puedes estar vendido, pues para qué controlar si estás comprado, la condición para cerrar es que sea Tiempo = HoraFinal y Cierre < Indicador(CHANDANTData), no obstante, déjalo para fijar ideas.
* Entonces, tal y como queda ahora, entre las 9 y las 17'30, si se dan una serie de condiciones, te va a comprar un contrato, y fuera de ese horario, no se abren negocios (compras), sino que unicamente, si cuando ocurra Tiempo = HoraFinal, ocurre también que Cierre < Indicador(CHANDANTData), entonces te va a cerrar el negocio, pero atención: si estás comprado y llegado Tiempo = HoraFinal, no se cumple Cierre < Indicador(CHANDANTData), te va a dejar el negocio abierto.
* Versión almacenando el valor de Indicador(TrixData) de cada barra en una variable, para utilizarlo en la siguiente barra.
Simplemente, se almacena después de hacer el control que tiene el valor anterior para no machacarlo, y se hace dos veces, en los dos sitios por donde puede ir el flujo del programa. Son los sitios apropiados por razones obvias. Tienes que pensar por dónde puede irá el flujo del programa según se den todas las condiciones posibles. Esta visión es báscia en programación, con ella puedes entender lo del absurdo del control de horas que tenías; piensa que ers la barra de las 19h y métete en el flujograma, a ver lo que harías.
* Otra cosa. Al final, cuando tengas un sistema que funcione, limpia variables que no se usan y toda la porquería que hemos ido dejando en el desarrollo.
No he podido compilar porque los path que usamos son diferentes y da error, pero probablemente los que yo he retocado sí los puedas compilar tu, así que te los adjunto:
(parece que no deja adjuntar más de 3 ficheros, bueno, creo que el otro FLW no es vital)
S2