Ayuda como detener un programa

Foro para cuestiones generales sobre la plataforma MetaTrader 4.

Ayuda como detener un programa

Notapor fxranger » 07 Abr 2011, 00:38

Hola mi duda es que quiero hacer un programa EA pero cada tick se ejecutan las ordenes y aveces quiero hacer una orden solo una vez y que el programa aguarde hasta la apertura de la siguiente vela, por ejemplo

una funcion que checa los fractales de las ultimas 20 velas en un grafico diario, pero el programa checa las 20 velas cada tick y abre y cierra operaciones tambien cada tick, entonces lo que quiero hacer es poner el programa en espera hasta la apertura de la siguiente vela y que vuelva a checar los fractales de las ultimas 20 velas.

no se si me explique y si me pueden ayudar cualquier comentario es bienvenido gracias.
fxranger
 
Mensajes: 24
Registrado: 06 Abr 2011, 23:47
Karma: 0

Re: Ayuda como detener un programa

Notapor alejo33 » 07 Abr 2011, 04:35

Hola, haz algo como esto:
static bool first_time = true;
if(first_time == true)
{
first_time = false;
return (0);
}
esto lo pones dentro de Start() y lo que vallas a hacer o comparar lo haces dentro del condicional if

El programa no va a esperar así que al declarar las variables precedidas por static el valor de la variable no cambia cada vez que se ejecute el EA.
Suerte
alejo33
 
Mensajes: 27
Registrado: 22 Mar 2011, 04:03
Karma: 0

Re: Ayuda como detener un programa

Notapor fxranger » 07 Abr 2011, 18:32

alejo33 escribió:Hola, haz algo como esto:
static bool first_time = true;
if(first_time == true)
{
first_time = false;
return (0);
}
esto lo pones dentro de Start() y lo que vallas a hacer o comparar lo haces dentro del condicional if

El programa no va a esperar así que al declarar las variables precedidas por static el valor de la variable no cambia cada vez que se ejecute el EA.
Suerte


Gracias amigo me funciono muy bien y me sirvio para saber el funcionamiento de las variables static, pero todavia queda una duda al aire haber si me puedes ayudar, ahora como ago para que en la apertura de la sigiente barra la variable first_time vuelva a agarrar el valor true y solo vuelva a checar todo lo que este en el condicional if 1 sola vez cada apertura de la ultima barra. Gracias
fxranger
 
Mensajes: 24
Registrado: 06 Abr 2011, 23:47
Karma: 0

Re: Ayuda como detener un programa

Notapor alejo33 » 08 Abr 2011, 05:34

Eso está sencillo, mira lo que tienes que hacer una condicional if para que verifiques si existe una nueva barra en el grafico entonces le asignas first_time = true dentro de if y ya está, ahora bien, como sabes que hay una nueva barra? bueno puedes usar la variable predefinida Bars, si colocas algo como esto:
barrar=Bars(); // obtienes la cantidad de barras en la grafica
y solo tienes que hacer una comparacion , es decir si barra aumentó uno quiere decir que estas en presencia de una nueva barra, entonces aquí le pones first_time = true y lo que le quieras ponerle.

Suerte
alejo33
 
Mensajes: 27
Registrado: 22 Mar 2011, 04:03
Karma: 0

Re: Ayuda como detener un programa

Notapor lord_michael » 06 May 2011, 16:53

Hola espero que no sea tarde.
Para abrir una operación en una vela yo utilizo lo siguiente:
declara una variable timeBar0 de tipo datetime y en el metodo start()


if( (timeBar0!=Time[0]) && OrdersTotal()<1 ) //Asegura una operación por barra.
{

...codigo para abrir la order...

timeBar0=Time[0];

}

este fragmento solo abre una operación y para abrir otra, la anterior ya debió haberse terminado.
lord_michael
 
Mensajes: 9
Registrado: 15 Abr 2011, 04:47
Karma: 0


Volver a MetaTrader 4

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados