Variable de vela anterior
Forums › ProRealTime foro Español › Soporte ProBuilder › Variable de vela anterior
- This topic has 6 replies, 4 voices, and was last updated 4 years ago by robertogozzi.
-
-
10/22/2020 at 12:41 PM #148081
Hola a todos.
Tengo un problema cuando uso la sencilla instrucción VARMOVIL=VARMOVIL[1]
El problema aparece cuando en la primera vela se ejecuta esa igualdad, ya que es como si se quedara sin informar y a partir de aquí, ya no puedo preguntar por ella, por ejemplo IF VARMOVIL=0. Ya que no se cumple ninguna igualdad.
He probado a preguntar por el barindex = 1 ó barindex = 0 para que no se ejecute VARMOVIL=VARMOVIL[1] en esas primeras velas, pero no me funciona.
¿Alguna ayuda por favor?
Gracias
10/22/2020 at 4:12 PM #148101Alturron,
No estoy seguro de entender bien tu duda sin ver más de tu código. Puede ser que mientras que la variable VARMOVIL no ha recibido ningún valor la condición VARMOVIL=VARMOVIL[1] se cumpla siempre puesto que su valor no ha cambiado?
Si ese es el problema puedes probar con:
1234ONCE VARMOVIL=0IF VARMOVIL<>0 AND VARMOVIL=VARMOVIL[1] THEN(LO QUE SEA QUE QUIERES QUE SE EJECUTE CON ESA CONDICION)ENDIFBuena suerte!
10/22/2020 at 4:48 PM #148108Gracias TempusFugit.
No creo que me valga. Te pego el código:
Lo que necesito es que una variable se informe por primera vez en la vela de las 9:00 y se vaya arrastrando en el tiempo. En el código que ves, está esto que digo. La variable en alguna parte más del programa, (que no pongo por razones de tamaño exclusivamente), se informa con otros valores, a partir de esa primera vez.
El problema, es que el código que ves, no devuelve nada. Si quito o comento, la linea VARMOVIL=VARMOVIL[1] del else más interno, funciona, pero mal, ya que devuelve el valor de varmovil con valor cero desde el primer día en la vela de las 9 y durante un día completo hasta la siguiente vela de las 9 que devuelve el valor correspondiente al ATR durante otro día completo y de nuevo cero y así sucesivamente. Por otra parte, si también comento o quito VARMOVIL=VARMOVIL[1] del else más externo, devuelve en la vela de las 9 el valor correspondiente y en el resto de velas 0. En este caso, si que en la primera vela de las 9 del primer día, ya devuelve el valor del ATR correspondiente, a diferencia del supuesto anterior, que en la vela de las 9 del primer día, devuelve cero.
No se si me habré hecho entender. Espero que si. Llevo mucho tiempo con este asunto y no consigo solucionarlo. Gracias de nuevo.
1234567891011121314151617181920HORADEENTRADA = 090000OPERAR = 0VARMOVIL = 0IF TIME = HORADEENTRADA THENOPERAR = 1ENDIFIF OPERAR = 1 THENIF VARMOVIL[1] = 0 THENVARMOVIL=AverageTrueRange[14](close)ELSEVARMOVIL=VARMOVIL[1]ENDIFELSEVARMOVIL=VARMOVIL[1]ENDIFRETURN VARMOVIL AS "EJE"10/22/2020 at 5:56 PM #14811110/22/2020 at 5:59 PM #148112Si pones VARMOVIL=0 al principio del código ese es el valor con el que se va a reiniciar en cada vela. Quizás esto es lo que buscas…
1234567891011ONCE OPERAR = 0ONCE VARMOVIL = 0HORADEENTRADA = 090000IF TIME = HORADEENTRADA THENOPERAR = 1VARMOVIL=AverageTrueRange[14](close)ENDIFRETURN VARMOVIL AS "EJE"10/22/2020 at 6:35 PM #148117hola y gracias a los 2.
No es ese el problema. Por un lado, hay más de 14 velas cargadas antes que se ejecute. Y en cuanto a la segunda respuesta con once he probado y tampoco.
Intento simplicarlo más con el siguiente código. Ese código que pongo ahora, devuelve en todas las velas a partir de las 9 del primer día, el valor “5”. La pregunta es, porque la primera vez no se cumple el if IF VARMOVIL[1] = 0 ???
Como decía antes, el código es algo más complejo, pero el problema lo tengo detectado ahí. Tened en cuenta que antes que se ejecute el IF que digo, se han ejecutado otras velas antes (las anteriores a las 9 de la mañana) por lo tanto el programa ejecuta la línea VARMOVIL=VARMOVIL[1] en velas que tan solo ejecutan esa línea, ya que no entra en la condición operar = 1.
Para mi, el problema está ahí, en informar una variable “X” con su “X[1]” cuando lo único que se ha hecho con ella es informarla a cero, pero no se ha usado. El tema, es que necesito hacerlo o algo similar, pero no se como.
12345678910111213141516171819HORADEENTRADA = 090000OPERAR = 0IF TIME = HORADEENTRADA THENOPERAR = 1ENDIFVARMOVIL = 0IF OPERAR = 1 THENIF VARMOVIL[1] = 0 THENVARMOVIL = 25ELSEVARMOVIL = 5ENDIFELSEVARMOVIL=VARMOVIL[1]ENDIFRETURN VARMOVIL AS "EJE"10/22/2020 at 6:51 PM #148121Prueba:
123IF BarIndex > 0 THENVARMOVIL = VARMOVIL [1]ENDIF -
AuthorPosts
Find exclusive trading pro-tools on