Página 1 de 1

Programar cambio de día

Publicado: 11 Sep 2022 20:46
por Nerol
Buenas, estoy creando un EA que abre operaciones cada día a la misma hora y si llega a su tp o sl se cierran, pero no se cómo puedo programar para que cada noche se reinicie automáqticamente, básicamente lo necesito para hacer backtesting de largos periodos, actualmente solo puedo verificar hacer día a día y me genera mucho trabajo si quiero probar variantes.

Gracias

Re: Programar cambio de día

Publicado: 12 Sep 2022 00:22
por Foréxitos
Hola Nerol, una vez me topé con este mismo problema y lo solucione con una variable y la función Day(). No sé si es la mejor manera porque una misma idea puede ser programada mil veces. Ahora no estoy con mi CPU así que te lo explico fácil por si acaso.
Creas por fuera una variable:
Int d;
Y en la condición que pone tu orden diaria le agregas lo siguiente:
if(.............&&d!=Day()){............d=Day();}
Saludos.

Re: Programar cambio de día

Publicado: 12 Sep 2022 00:31
por Foréxitos
Para, estoy viendo que tu EA pone más de una orden por día.... entonces no te sirve lo que te puse porque te pondría una por día...

Re: Programar cambio de día

Publicado: 12 Sep 2022 00:47
por Nerol
Gracias Foréxitos por la respuesta, para concretar, lo que necesito es poder ejecutar el EA en el "probador de estrategias" y que pueda hacer un mes seguido (por ejemplo) sin tener que ir cambiando la fecha día a día (que es lo que hago ahora) porque si lo ejecuto (por ejemplo una semana) me hace la operación del primer día, pero el resto de días no.
El EA abre una operación y si se cierra en SL abre otra que si cierra en SL ya no hace nada más hasta el día siguiente. Si la primera operación alcanza el TP se detiene y no vuelve a ejecutar hasta el día siguiente.
No se si me explico.
Gracias

Re: Programar cambio de día

Publicado: 12 Sep 2022 14:35
por Foréxitos
Hola Nerol... entonces esta bien lo que te dije pero le tendrías que agregar lo siguiente.... (todo eso si vas de a una orden)
if(.............&&d!=Day()&&OrdersTotal()<1){............d=Day();}
acá estas diciendo:
si se da la condición de entrada (que eso depende de como lo hiciste) y la variable "d" no es igual que el día actual y el total de las ordenes es cero... poneme una orden (esto ya lo hiciste con TP y SL) y dale a "d" el nuevo valor que es el día actual. Saludos

Re: Programar cambio de día

Publicado: 12 Sep 2022 18:27
por Nightmare
Nerol escribió: 11 Sep 2022 20:46 ... EA que abre operaciones cada día a la misma hora...

Gracias

bool verificaHora()
{
int gmtHoraInicioMasOffset = HoraGMTdeseada + GMToffset;

if (gmtHoraInicioMasOffset > 23) gmtHoraInicioMasOffset -= 24;
if (gmtHoraInicioMasOffset < 0) gmtHoraInicioMasOffset += 24;

bool miFiltroHorario = ( TimeHour(TimeCurrent()) == gmtHoraInicioMasOffset );

if ( miFiltroHorario ) return true;
else return false;
}

donde
HoraGMTdeseada: hora gmt a la que quieres abrir operacion, si por ejm pones 22 que es el inicio de cada dia.

GMToffset: depende del broker (y de la epoca del año q cambia en 1)

Re: Programar cambio de día

Publicado: 12 Sep 2022 18:55
por Nerol
Hola,
@Foréxitos, @Nighmare

Mil Gracias, lo pruebo y os digo