Condición en MQL4 que a veces se ejecuta y a veces no

Foro dedicado a todo lo relacionado con la versión 4 de la plataforma de Metaquotes.
Responder
Aquistoy
Mensajes: 3
Registrado: 12 Oct 2022 21:07

Condición en MQL4 que a veces se ejecuta y a veces no

Mensaje por Aquistoy »

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.
Adjuntos
Casque.gif
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12793
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Condición en MQL4 que a veces se ejecuta y a veces no

Mensaje por X-Trader »

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
"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."
Aquistoy
Mensajes: 3
Registrado: 12 Oct 2022 21:07

Re: Condición en MQL4 que a veces se ejecuta y a veces no

Mensaje por Aquistoy »

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 );
}
}
}
sfriendsm2
Mensajes: 36
Registrado: 24 Jun 2020 17:20

Re: Condición en MQL4 que a veces se ejecuta y a veces no

Mensaje por sfriendsm2 »

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.
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12793
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Condición en MQL4 que a veces se ejecuta y a veces no

Mensaje por X-Trader »

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.
Esa no me la sabía yo, mil gracias sfriendsm2! :smt023


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."

sfriendsm2
Mensajes: 36
Registrado: 24 Jun 2020 17:20

Re: Condición en MQL4 que a veces se ejecuta y a veces no

Mensaje por sfriendsm2 »

X-Trader escribió: 12 Oct 2022 22:41
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.
Esa no me la sabía yo, mil gracias sfriendsm2! :smt023


Saludos,
X-Trader
Pocas se te escapan, y es que es muy sutil esta ñoñada, jjjj
Aquistoy
Mensajes: 3
Registrado: 12 Oct 2022 21:07

Re: Condición en MQL4 que a veces se ejecuta y a veces no

Mensaje por Aquistoy »

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.
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12793
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Condición en MQL4 que a veces se ejecuta y a veces no

Mensaje por X-Trader »

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.
Anda que... :lol: :D. Gracias por aclararlo Aquistoy ;).


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!


Responder

Volver a “Metatrader 4”