Iniciar sesión

Ver la versión completa : Pregunta a os gurús de la programación



robertomar
02-02-2023 23:07,
Muchas gracias, también he descubierto las funciones iopen y la iclose, que me dan los valores de las velas anteriores e el timeframe que quieras.

Muchas gracias por todo

De nada hombre, de todos modos con iClose, iOpen, etc también tienes que usar iBarShift igualmente para localizar la vela de la que quieres el precio de apertura, o cierre o el que sea.

Saludos.

lema
03-02-2023 00:26,
Bueno, si lo haces como dice el compañero Wolfman, tendrías el problema de que si justo a las 8 (o la hora que sea que quieras) no tienes el EA o la plataforma funcionando por lo que sea, o se te ha ido la luz o en ese par no se produce un tick justo en ese momento (si no hay un tick justo a las 08:00:00, sino que el siguiente tick que llega es a las 08:00:01 por ejemplo o a las 08:00:03) no te guardaría la variable. Y aunque te la guardase, tendrías que guardarla en un archivo o en las variables globales del terminal, puesto que si después a lo largo del día tuvieras un solo microcorte de conexión con el broker (cosa que todos los días suele pasar varias veces) el EA se reiniciaría y el valor almacenado en esa variable se perdería.

Por tanto, NO es aconsejable hacerlo de ese modo. Eso solo podría servir para backtest, pero no para operativa on line.

Lo más recomendable es NO guardar ninguna variable, sino comprobar el precio de apertura de la vela que te interesa a posteriori en cada momento que te interese y el EA esté funcionando.

La forma de hacer esto es mediante la función iBarShift. Si es para el símbolo donde está puesto el EA se podría hacer así:



double precio = Open[iBarShift(_Symbol, 0, hora, false)];

// Donde hora tiene que ser una variable datetime donde hayas calculado la hora que te interese.



Saludos y un abrazo.


Muchas gracias, también he descubierto las funciones iopen y la iclose, que me dan los valores de las velas anteriores e el timeframe que quieras.

Muchas gracias por todo

robertomar
03-02-2023 02:01,
Bueno, si lo haces como dice el compañero Wolfman, tendrías el problema de que si justo a las 8 (o la hora que sea que quieras) no tienes el EA o la plataforma funcionando por lo que sea, o se te ha ido la luz o en ese par no se produce un tick justo en ese momento (si no hay un tick justo a las 08:00:00, sino que el siguiente tick que llega es a las 08:00:01 por ejemplo o a las 08:00:03) no te guardaría la variable. Y aunque te la guardase, tendrías que guardarla en un archivo o en las variables globales del terminal, puesto que si después a lo largo del día tuvieras un solo microcorte de conexión con el broker (cosa que todos los días suele pasar varias veces) el EA se reiniciaría y el valor almacenado en esa variable se perdería.

Por tanto, NO es aconsejable hacerlo de ese modo. Eso solo podría servir para backtest, pero no para operativa on line.

Lo más recomendable es NO guardar ninguna variable, sino comprobar el precio de apertura de la vela que te interesa a posteriori en cada momento que te interese y el EA esté funcionando.

La forma de hacer esto es mediante la función iBarShift. Si es para el símbolo donde está puesto el EA se podría hacer así:



double precio = Open[iBarShift(_Symbol, 0, hora, false)];

// Donde hora tiene que ser una variable datetime donde hayas calculado la hora que te interese.



Saludos y un abrazo.

Wolfman
03-02-2023 11:47,
Gracias por la respuesta, pero de ese modo tengo que tener el ea activado antes de la primera hora que quiero tomar.
Seguiré indagando

Para que un Expert Funcione debe de estar trabajando siempre, tu pc no debe de apagarse y tener tu metatrader corriendo con el Ea.

Saludos y exitos.

lema
03-02-2023 12:49,
Soy un autodidacta de la programacion en mql4 por necesidad jajajaja pero yo lo haria de la siguiente manera, recuerda que pueden existir muchas formas.

2 variables de tipo double
utilizaria timecurret y lo compararia si es igual a las horas que defines
cuando sea igual que le asigne el valor del bid o ask como prefiereas a la variabe 1
luego la siguiente hora lo mismo y que asigne el valor a la variable 2
y al final del dia a las 12 digamos que lo reinicie si no te servira mas.

Saludos y exitos.

Gracias por la respuesta, pero de ese modo tengo que tener el ea activado antes de la primera hora que quiero tomar.
Seguiré indagando

Wolfman
03-02-2023 14:00,
Buenas a todos y de antemano gracias por vuestro tiempo.
Que orden debo poner en un programa para saber el precio de un activo a una hora determinada, por ejemplo, quiero asignar a una variable el valor de mercado a las 8:00 y a otra el de las 10:00.
De nuevo muchas gracias

Soy un autodidacta de la programacion en mql4 por necesidad jajajaja pero yo lo haria de la siguiente manera, recuerda que pueden existir muchas formas.

2 variables de tipo double
utilizaria timecurret y lo compararia si es igual a las horas que defines
cuando sea igual que le asigne el valor del bid o ask como prefiereas a la variabe 1
luego la siguiente hora lo mismo y que asigne el valor a la variable 2
y al final del dia a las 12 digamos que lo reinicie si no te servira mas.

Saludos y exitos.

lema
03-02-2023 18:11,
Buenas a todos y de antemano gracias por vuestro tiempo.
Que orden debo poner en un programa para saber el precio de un activo a una hora determinada, por ejemplo, quiero asignar a una variable el valor de mercado a las 8:00 y a otra el de las 10:00.
De nuevo muchas gracias