Condición en MQL4 que a veces se ejecuta y a veces no
Condición en MQL4 que a veces se ejecuta y a veces no
Hola a todos:
Estoy empezando en esto de la programación con MQL4, y me ocurre que le pongo una orden para que los viernes noche cierre todas las operaciones abiertas, y mientras está tradeando en el probador de estrategias, se cumple, pero cuando el robot deja de crear nuevas operaciones, por haber llegado al límite que le he puesto, o por superar cierto Drawdown, deja de ejecutar los cierres, y no lo comprendo.
Es la primera orden de todas, y está fuera de cualquier otro condicionante:
void OnTick() {
if( (DayOfWeek()==5 && Hour()==23 && Minute()==58)) closeAll();
Si podéis observar el adjunto, el 24 de febrero deja de hacer operaciones, y no es hasta el 27 de abril que el probador de estrategias cierra todo, habiendo pasado por alto varios viernes, sin cerrar las operaciones que había abiertas. ¿Esto es normal, o como supongo, estoy haciendo algo mal?. Gracias.
Estoy empezando en esto de la programación con MQL4, y me ocurre que le pongo una orden para que los viernes noche cierre todas las operaciones abiertas, y mientras está tradeando en el probador de estrategias, se cumple, pero cuando el robot deja de crear nuevas operaciones, por haber llegado al límite que le he puesto, o por superar cierto Drawdown, deja de ejecutar los cierres, y no lo comprendo.
Es la primera orden de todas, y está fuera de cualquier otro condicionante:
void OnTick() {
if( (DayOfWeek()==5 && Hour()==23 && Minute()==58)) closeAll();
Si podéis observar el adjunto, el 24 de febrero deja de hacer operaciones, y no es hasta el 27 de abril que el probador de estrategias cierra todo, habiendo pasado por alto varios viernes, sin cerrar las operaciones que había abiertas. ¿Esto es normal, o como supongo, estoy haciendo algo mal?. Gracias.
Re: Condición en MQL4 que a veces se ejecuta y a veces no
Hola Aquistoy, bienvenido al Foro (bonito nick jeje). Posiblemente el problema esté en alguna de estas causas:
1. Un error en la función CloseAll (puedes compartir el código para poder analizarlo?).
2. Un festivo que no tuviera negociación a esa hora por el motivo que fuera (revisa fechas, a ver si puede ser esa la razón).
Cuando puedas dime y lo veo.
Saludos,
X-Trader
Saludos
1. Un error en la función CloseAll (puedes compartir el código para poder analizarlo?).
2. Un festivo que no tuviera negociación a esa hora por el motivo que fuera (revisa fechas, a ver si puede ser esa la razón).
Cuando puedas dime y lo veo.
Saludos,
X-Trader
Saludos
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Re: Condición en MQL4 que a veces se ejecuta y a veces no
Gracias por la pronta respuesta, la función es todo simplona, y mientras está haciendo operaciones funciona:
void closeAll(){
for( int i = 0; i < OrdersTotal(); i++ ) {
if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) break;
if( OrderSymbol() == Symbol() ){
RefreshRates(); //(no sé si es necesario)
if( OrderType() == OP_BUY ) OrderClose( OrderTicket(), OrderLots(), Bid, 3 );
if( OrderType() == OP_SELL ) OrderClose( OrderTicket(), OrderLots(), Ask, 3 );
}
}
}
void closeAll(){
for( int i = 0; i < OrdersTotal(); i++ ) {
if( OrderSelect( i, SELECT_BY_POS, MODE_TRADES ) == false ) break;
if( OrderSymbol() == Symbol() ){
RefreshRates(); //(no sé si es necesario)
if( OrderType() == OP_BUY ) OrderClose( OrderTicket(), OrderLots(), Bid, 3 );
if( OrderType() == OP_SELL ) OrderClose( OrderTicket(), OrderLots(), Ask, 3 );
}
}
}
-
- Mensajes: 36
- Registrado: 24 Jun 2020 17:20
Re: Condición en MQL4 que a veces se ejecuta y a veces no
DayOfWeek no vale para el probador de estrategias, porque no evalúa la fecha por la que vas probando, sino la fecha del servidor al que te has conectado.
DayOfWeek Returns the current zero-based day of the week (0-Sunday,1,2,3,4,5,6) of the last known server time.
De hecho esa hora tan concreta no la puedes reproducir en tu probador de estrategias, a no ser que uses un timeframe de 1 minuto y uses la siguiente función pasándole la hora de la vela 0.
TimeDayOfWeek Returns the zero-based day of week (0 means Sunday,1,2,3,4,5,6) of the specified date.
Espero que se resuelva así el problema.
DayOfWeek Returns the current zero-based day of the week (0-Sunday,1,2,3,4,5,6) of the last known server time.
De hecho esa hora tan concreta no la puedes reproducir en tu probador de estrategias, a no ser que uses un timeframe de 1 minuto y uses la siguiente función pasándole la hora de la vela 0.
TimeDayOfWeek Returns the zero-based day of week (0 means Sunday,1,2,3,4,5,6) of the specified date.
Espero que se resuelva así el problema.
Re: Condición en MQL4 que a veces se ejecuta y a veces no
Esa no me la sabía yo, mil gracias sfriendsm2!sfriendsm2 escribió: 12 Oct 2022 22:29 DayOfWeek no vale para el probador de estrategias, porque no evalúa la fecha por la que vas probando, sino la fecha del servidor al que te has conectado.
DayOfWeek Returns the current zero-based day of the week (0-Sunday,1,2,3,4,5,6) of the last known server time.
De hecho esa hora tan concreta no la puedes reproducir en tu probador de estrategias, a no ser que uses un timeframe de 1 minuto y uses la siguiente función pasándole la hora de la vela 0.
TimeDayOfWeek Returns the zero-based day of week (0 means Sunday,1,2,3,4,5,6) of the specified date.
Espero que se resuelva así el problema.

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
-
- Mensajes: 36
- Registrado: 24 Jun 2020 17:20
Re: Condición en MQL4 que a veces se ejecuta y a veces no
Pocas se te escapan, y es que es muy sutil esta ñoñada, jjjjX-Trader escribió: 12 Oct 2022 22:41Esa no me la sabía yo, mil gracias sfriendsm2!sfriendsm2 escribió: 12 Oct 2022 22:29 DayOfWeek no vale para el probador de estrategias, porque no evalúa la fecha por la que vas probando, sino la fecha del servidor al que te has conectado.
DayOfWeek Returns the current zero-based day of the week (0-Sunday,1,2,3,4,5,6) of the last known server time.
De hecho esa hora tan concreta no la puedes reproducir en tu probador de estrategias, a no ser que uses un timeframe de 1 minuto y uses la siguiente función pasándole la hora de la vela 0.
TimeDayOfWeek Returns the zero-based day of week (0 means Sunday,1,2,3,4,5,6) of the specified date.
Espero que se resuelva así el problema.![]()
Saludos,
X-Trader
Re: Condición en MQL4 que a veces se ejecuta y a veces no
Disculpad, al final era la cosa más tonta del mundo: el bróker no admite operaciones después de las 23:55, aunque el mercado siga operando.
Re: Condición en MQL4 que a veces se ejecuta y a veces no
Anda que...Aquistoy escribió: 27 Oct 2022 09:44 Disculpad, al final era la cosa más tonta del mundo: el bróker no admite operaciones después de las 23:55, aunque el mercado siga operando.



Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Si te ha gustado este hilo del Foro, ¡compártelo en redes!