Muy buenas;
Estoy intentando hacer un EA y solo quiero que haga una entrada al dia .
Mirando en este foro encontré alguna cosa pero no me funcionaba ( La copio debajo).
Simplemente quiero una función que revise las ordenes ya cerradas y compruebe la hora de entrada de ese activo con un mismo numero magico, de tal manera que me devuelva un true o false y asi ponerlo en las condiciones del robot para que no realice mas entradas que la primera que realice al dia.
No estoy hablando de que no haga varios trades al dia la vez que para eso ya tengo otra funcion, si no que una vez haga una operacion al dia, esta funcion que os pego le diga que ya ha abierto una en ese activo y con ese magic number,,, No entiendo porque ni funciona.
Bueno, espero que alguien me puede ayudar.
Muchas gracias de ante mano.
Os copio la función en cuestión
bool No_Trades_Today ()
{
datetime today = iTime(NULL,PERIOD_D1,0);
int Magic_Number;
for (int i = OrdersHistoryTotal()-1;i>0;i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol() != _Symbol) continue;
if ( OrderMagicNumber() != Magic_Number) continue;
if (OrderOpenTime() >= today) return(false);
}
return(true);
}
de entrada no das valor a esto
int Magic_Number;
creo que tienes que definir un valor
int Magic_Number =10;
donde 10 sea el numero mágico que uses o pn la variable del imput correspondiente
de entrada no das valor a esto
int Magic_Number;
creo que tienes que definir un valor
int Magic_Number =10;
donde 10 sea el numero mágico que uses o pn la variable del imput correspondiente
Hola,
Gracias por la respuesta, Es una función que si le da valor luego al entrar en el EA.
Un saludo.
Hola,
Gracias por la respuesta, Es una función que si le da valor luego al entrar en el EA.
Un saludo.
pero la reinicias localmente dándole por tanto valor 0
eso hace que esta linea
if ( OrderMagicNumber() != Magic_Number) continue;
te de false cuando tu quieres que de true y por tanto no pasa a la siguiente linea
pero la reinicias localmente dándole por tanto valor 0
eso hace que esta linea
if ( OrderMagicNumber() != Magic_Number) continue;
te de false cuando tu quieres que de true y por tanto no pasa a la siguiente linea
Entiendo. He hecho esta modificacion:
bool No_Trades_Today (int Magic_Number){
datetime today = iTime(NULL,PERIOD_D1,0);
for (int i = OrdersHistoryTotal()-1;i>0;i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol() != _Symbol) continue;
if ( OrderMagicNumber() != Magic_Number) continue;
if (OrderOpenTime() >= today) return(false);
}
return(true);
}
Creo que ahora si . Como lo ves ?
Muchas gracias Marta.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Muy buenas;
Estoy intentando hacer un EA y solo quiero que haga una entrada al dia .
Mirando en este foro encontré alguna cosa pero no me funcionaba ( La copio debajo).
Simplemente quiero una función que revise las ordenes ya cerradas y compruebe la hora de entrada de ese activo con un mismo numero magico, de tal manera que me devuelva un true o false y asi ponerlo en las condiciones del robot para que no realice mas entradas que la primera que realice al dia.
No estoy hablando de que no haga varios trades al dia la vez que para eso ya tengo otra funcion, si no que una vez haga una operacion al dia, esta funcion que os pego le diga que ya ha abierto una en ese activo y con ese magic number,,, No entiendo porque ni funciona.
Bueno, espero que alguien me puede ayudar.
Muchas gracias de ante mano.
Os copio la función en cuestión
bool No_Trades_Today ()
{
datetime today = iTime(NULL,PERIOD_D1,0);
int Magic_Number;
for (int i = OrdersHistoryTotal()-1;i>0;i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol() != _Symbol) continue;
if ( OrderMagicNumber() != Magic_Number) continue;
if (OrderOpenTime() >= today) return(false);
}
return(true);
}