nav-left cat-right
cat-right

Indicador de horarios de operación

reloj

Habitualmente utilizamos tramos horarios para permitir a los Expert Advisor abrir operaciones o no. Normalmente hay horas en las que es mejor no operar ciertos cruces, ya sea por peligro de movimientos muy bruscos o por que son horas de mercados horizontales donde lo único que podemos conseguir en tocar los Stops una y otra vez.

A continuación encontraréis un indicador que muestra un histograma con franjas verdes y rojas en función de si la barra está dentro del horario de mercado especificado o no.

En MQL4 las funciones para manejar tiempo y fechas son algo engorrosas… El código central del indicador es la función que calcula si estamos o no dentro de horario:

int 
timeWindow(int barra){
// Determina si estamos en horario de operación y lo muestra con un histograma de semáforo.
// Tenemos hasta 3 ventanas junto con límites en los extremos del lunes y viernes.
 
 
   // Llamo oTime al tiempo en segundos desde 00:00 de un datetime.
 
   // Calcular oTime de la barra i
   // A partir del número de barra, obtenemos su hora y minutos, componemos la hora en una cadena y obtenemos los segundos desde 00:00 para esa hora.
   int horaBarra = TimeHour(Time[barra]);
   int minutoBarra = TimeMinute(Time[barra]);
   string tiempoBarraCadena = horaBarra + ":" + minutoBarra;
   int oTimeBarra = StrToTime(tiempoBarraCadena);
 
   // Calcular oTime del tiempo Inicio. Ajustamos un periodo.
   int oTimeIni = StrToTime(Window_Ini) - (Period()*60);
 
   // Calcular oTime del tiempo Fin. Ajustamos un periodo.
   // Sabemos que una ventana traspasa las 24 horas, ej. de 10:00 a 01:00, porque oTimeFin < oTimeIni. Y le sumamos 24 horas a oTimeFin.
   int oTimeFin = StrToTime(Window_Fin) + (Period()*60);
   //if(oTimeFin < oTimeIni) oTimeFin += 86400; // 60s * 60m * 24H
 
 
   if(oTimeFin < oTimeIni){
      if(oTimeBarra > oTimeIni) oTimeFin += 86400; // 60s * 60m * 24H
      if(oTimeBarra < oTimeIni) oTimeIni -= 86400;
   }
 
   if(oTimeIni < oTimeBarra && oTimeBarra < oTimeFin) return(1);
   else return(0);  
}

Y a continuación tenéis el indicador para descargar en dos versiones, una con un solo tramo horario (para facilitar el estudio del código) y otro un poquito más avanzado que permite utilizar hasta tres tramos de operación.

Como siempre, ya sabéis cualquier duda podéis comentarla en el foro.

Artículos Relacionados

  1. Utilizar indicadores en un EA con iCustom
  2. El primer indicador
  3. ¿Qué es Forex?
  4. Primer Expert Advisor para MetaTrader

468 ad

Leave a Reply

You must be logged in to post a comment.