PDA

Ver la versión completa : EA MT4 Cómo hago que mi EA limite la apertura de ordenes por dia?



Nelson Pineda
24-08-2023 22:00,
Excelente. Lo pruebo a la brevedad posible, Muchas gracias por su generosidad, compañero.

Reputación :star::star::star::star::star:

tivag
26-08-2023 07:27,
Maestro tivag, muchas gracias. Le envío un ejemplo del código por acá para seguir sus indicaciones. He intentado escribirlo de un lado y del otro y de aca para alla. Donde puedo colocar el código que me ha sugerido?


hola de maestro nada , ojala lo fuese... tienes que ponerlo en la parte que te convenga , pues ten en cuenta que eso solo lo va a realizar una vez al dia, por ejemplo si quieres que te haga un analisis al dia pues lo pones antes del analisis, en tu caso como lo que quieres es que solo sea una compra al dia pues ponerlo delante de donde lanzas la orden de apertura, declarando en la parte superior la variable int Today2 = -1;

"
if((iBands(NULL,PERIOD_M15,14,0,1,PRICE_OPEN,MODE_ LOWER,1)>iMA(NULL,0,9,1,MODE_EMA,PRICE_OPEN,1))) //apertura de orden Buy
{
if (DayOfWeek() != Today2)
{
Today2 = DayOfWeek();
result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage ,0,0,"EA1",MagicNumber,0,Blue);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(TheStopLoss,Digits),NormalizeDouble(TheTa keProfit,Digits),0,Green);
}
return(0);
}
}

}
}"

saludos y espero que te sirva

Nelson Pineda
26-08-2023 14:49,
Maestro tivag, muchas gracias. Le envío un ejemplo del código por acá para seguir sus indicaciones. He intentado escribirlo de un lado y del otro y de aca para alla. Donde puedo colocar el código que me ha sugerido?

//+------------------------------------------------------------------+
extern int MagicNumber=01;
extern double Lots =0.1;
extern double StopLoss=100;
extern double TakeProfit=150;
extern int TrailingStop=80;
extern int Slippage=3;
//+------------------------------------------------------------------+
// EA1 start function
//+------------------------------------------------------------------+
int start()
{
double MyPoint=Point;
if(Digits==3 || Digits==5) MyPoint=Point*10;

double TheStopLoss=0;
double TheTakeProfit=0;
if( TotalOrdersCount()==0 )
{
int result=0;
if((iBands(NULL,PERIOD_M15,14,0,1,PRICE_OPEN,MODE_ LOWER,1)>iMA(NULL,0,9,1,MODE_EMA,PRICE_OPEN,1))) //apertura de orden Buy
result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage ,0,0,"EA1",MagicNumber,0,Blue);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(TheStopLoss,Digits),NormalizeDouble(TheTa keProfit,Digits),0,Green);
}
return(0);
}
}

for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber
)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
{
if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
{
if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyP oint*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}

int TotalOrdersCount()
{
int result=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
if (OrderMagicNumber()==MagicNumber) result++;

}
return (result);
}
//+---------------------------------------------------+

jaguar1637
26-08-2023 21:59,
hola lo podrias hacer de la siguiente manera:

int Today2 = -1;

{
if (DayOfWeek() != Today2)
{
Today2 = DayOfWeek();
"lo que quieras"();

}
}

esto te hara que una vez al dia te ejecute "lo que tu quieras".

espero que te sirva

saludos


avoid Sunday, means DayOfWeek() == 0
bcoz there is no volume

evitar Domingo , significa DayOfWeek () == 0
bcoz no hay volumen

tivag
26-08-2023 23:06,
Hola, compañeros. He estado buscando la forma de como hacer que mi EA limite la apertura de ordenes al dia. Quiero que abra solo una cada dia, pero no he resuelto cómo. Necesito la opinión de un experto. Me pueden ayudar?

hola lo podrias hacer de la siguiente manera:

int Today2 = -1;

{
if (DayOfWeek() != Today2)
{
Today2 = DayOfWeek();
"lo que quieras"();

}
}

esto te hara que una vez al dia te ejecute "lo que tu quieras".

espero que te sirva

saludos

Nelson Pineda
26-08-2023 23:15,
Hola, compañeros. He estado buscando la forma de como hacer que mi EA limite la apertura de ordenes al dia. Quiero que abra solo una cada dia, pero no he resuelto cómo. Necesito la opinión de un experto. Me pueden ayudar?