Please help with this code!

 
Hello, I have a crossover ea of 2 EMAs, but what I need is that when the 4 period ema crosses the 100 ema the command 50pips will open after having crossed, currently the robot that I have opens it immediately, I made some modifications using a double variable called Preciobuy and another PrecioSell that saves the price so that when the bid is above that value, it will mount the operation but it doesn't work for me, I don't know what to do .. please help.

I will leave my code so that you can see it and you can help me:

//-----------------------------------------------------------------------------´´
extern int MagicNumber=10001;
extern double Lots =0.10;
extern double StopLoss=0;
extern double TakeProfit=50;
extern int TrailingStop=0;
extern int Slippage=3;
double Preciobuy=iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,0);
double Preciosell=iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,0);
double preciobuy2=Preciobuy+50;
double preciosell2=Preciosell-50;
//+------------------------------------------------------------------+
// expert 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((iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0)>iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,0))&&(iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0)>preciobuy2)) // Here is your open buy rule
{
result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA Generator",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(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
return(0);
}
if((iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0)<iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,0))&&(iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0)<preciosell2)) // Here is your open Sell rule
{
result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"EA Generator",MagicNumber,0,Red);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,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((iMA(NULL,0,4,0,MODE_EMA,PRICE_CLOSE,0)<iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,0))&&(iMA(NULL,0,4,0,MODE_EMA,PRICE_CLOSE,0)<preciosell2)) //here is your close buy rule
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red);
}
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((iMA(NULL,0,4,0,MODE_EMA,PRICE_CLOSE,0)>iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,0))&&(iMA(NULL,0,4,0,MODE_EMA,PRICE_CLOSE,0)>preciobuy2)) // here is your close sell rule
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red);
}
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
{
if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*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);

Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
vzlademd:
Hello, I have a crossover ea of 2 EMAs, but what I need is that when the 4 period ema crosses the 100 ema the command 50pips will open after having crossed, currently the robot that I have opens it immediately, I made some modifications using a double variable called Preciobuy and another PrecioSell that saves the price so that when the bid is above that value, it will mount the operation but it doesn't work for me, I don't know what to do .. please help.

I will leave my code so that you can see it and you can help me:


Hello,

need to put the new variables on Start() function.

Like this...


double Preciobuy=0;
double Preciosell=0;
double preciobuy2=0;
double preciosell2=0;
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{
double MyPoint=Point;
if(Digits==3 || Digits==5) MyPoint=Point*10;
double TheStopLoss=0;
double TheTakeProfit=0;
//---
Preciobuy=iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,0);
Preciosell=iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,0);
preciobuy2=Preciobuy+50*MyPoint;
preciosell2=Preciosell-50*MyPoint;
//---
........................
}
Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
 
Thansks!! Nikolaos Pantzos