Acceder

¿Añadir filtro horario a un Expert Advisor?

7 respuestas
¿Añadir filtro horario a un Expert Advisor?
¿Añadir filtro horario a un Expert Advisor?
#1

¿Añadir filtro horario a un Expert Advisor?

Hola,

Me gustaría poder añadirle a un expert advisor de mt4 una hora de inicio y de fiscalización. Si alguien de este foro sabe cómo podría incluirselo en su código, le estaría agradecido,

Saludos

#2

Re: ¿Añadir filtro horario a un Expert Advisor?

Hola Arrufat,

¿Te refieres a un filtro horario? Por ejemplo, que el EA solamente opere de 12:00 a 14:00.

Un saludo!

#3

Re: ¿Añadir filtro horario a un Expert Advisor?

Hola David,

Si, había escrito mal antes finalización. Se trataría de poder acotar la hora en la que comienza y la hora en la que solo lanzaría ordenes si tuviesen relación con las ya lanzadas, pero cuando ya estuviesen todas cerradas no lanzaría mas.

Saludos

#4

Re: ¿Añadir filtro horario a un Expert Advisor?

Hola Arrufat,

He encontrado esto, a ver si te sirve:

#import "Kernel32.dll"
void GetSystemTime(int& a0[]);

extern string _6 = "--- Trading Hours ---";
extern bool AutoGMTOffset = TRUE;
extern double ManualGMTOffset = 0;
extern bool UseTradingHours = true;
extern bool TradeAsianMarket = true;
extern double StartTime1 = 22.00;
extern double EndTime1 = 07.00;
extern bool TradeEuropeanMarket = true;
extern double StartTime2 = 07.00;
extern double EndTime2 = 12.00;
extern bool TradeNewYorkMarket = true;
extern double StartTime3 = 12.00; // 8:00 EST
extern double EndTime3 = 17.00;
int gmtoffset;
string gs_548 = "";

if (!IsTesting() && AutoGMTOffset == TRUE) gmtoffset = GMTOffset();
else gmtoffset = ManualGMTOffset;

string ls_52 = "Your Strategy is Running.";
string ls_60 = "Your Strategy is set up for time zone GMT " + gmtoffset;
string ls_76 = "Account Balance= " + DoubleToStr(AccountBalance(), 2);
string ls_84 = " ";

Comment("\n",
"\n", " ",
"\n", " ", 
"\n", " ", ls_52,
"\n", " ", ls_60,
"\n", " ", ls_76,
// "\n", " ", ls_77, 
"\n");

int TradeTime()
{
if (!IsTesting() && AutoGMTOffset == TRUE) gmtoffset = GMTOffset();
else gmtoffset = ManualGMTOffset;

int TradingTime=0;
int CurrentHour=Hour(); // Server time in hours
double CurrentMinute =Minute(); // Server time in minutes
double CurrentTime=CurrentHour + CurrentMinute/100; // Current time
double CurrentTime1 = CurrentTime + gmtoffset;

if (CurrentTime1==0) CurrentTime=00;
if (CurrentTime1<0) CurrentTime1 = CurrentTime1 + 24;
if (CurrentTime1 >= 24) CurrentTime1 = CurrentTime1 - 24;

if (!DaytoTrade()) return(false);
if (UseTradingHours==true)
{
if (TradeAsianMarket==true)
{
if(StartTime1
if(CurrentTime1>=StartTime1 && CurrentTime1<=EndTime1)
TradingTime=1;}

if(StartTime1>EndTime1){
if(CurrentTime1>=StartTime1 || CurrentTime1<=EndTime1)
TradingTime=1;}
}

if (TradeEuropeanMarket==true)
{
if(StartTime2
if(CurrentTime1>=StartTime2 && CurrentTime1<=EndTime2)
TradingTime=1;}

if(StartTime2>EndTime2){
if(CurrentTime1>=StartTime2 || CurrentTime1<=EndTime2)
TradingTime=1;}
}

if (TradeNewYorkMarket==true)
{
if(StartTime3
if(CurrentTime1>=StartTime3 && CurrentTime1<=EndTime3)
TradingTime=1;}

if(StartTime3>EndTime3){
if(CurrentTime1>=StartTime3 || CurrentTime1<=EndTime3)
TradingTime=1;}
}
}

else
TradingTime=1;

return(TradingTime);
}

if (BuyCondition1 && TradeTime() ) 
OpenBuy=true;

Si no te funciona lo vamos viendo, no he tocado mucho mql4 pero algo podremos hacer.

Un saludo!

#5

Re: ¿Añadir filtro horario a un Expert Advisor?

Gracias David, por las molestias, yo aún he tocado menos este lenguaje, no sé dónde se tiene que incluir el parrafo que me adjuntabas, ¿sabes si puede incluirse todo junto al final o va cada parte en un sitio concreto?

#6

Re: ¿Añadir filtro horario a un Expert Advisor?

Hola Arrufat, pues incluyelo al principio del artículo porque por lo que me has contado creo que es el filtro principal y mira a ver si funciona así en backtest o en demo.

Un saludo!

#7

Re: ¿Añadir filtro horario a un Expert Advisor?

Hola, si se trata de un EA simple donde hay unas condiciones de entrada y salida y poco más, puedes incluir junto a las condiciones de entrada (compra y venta) otro condicionante con la hora mayor a "X" y menor a "Y".

Ejemplo:
if ("condiciones de compra de tu robot") && (Hour()>X) && (Hour()

#8

Re: ¿Añadir filtro horario a un Expert Advisor?

Gracias David, lo probaré.