Download MetaTrader 5

My robot can't execute multiple signal

To add comments, please log in or register
ignatius
10
ignatius  
i have trade using robot i trade many curencies in one platfrom, but when the signal confirm in several curencies it only execute one ow two curencies, IE : its Conform to execute EUR,GBP,AUD,JPY but its only excute EUR and GBP, what logic or setting do i had to fix
Keith Watford
Moderator
10411
Keith Watford  

You don't show the code of the EA.

How do you expect us to know? 

ignatius
10
ignatius  

Dear Mr GumRai

Do You Mean This Code :

extern int MagicNumber=10001;
extern double Lots =0.01;
extern double StopLoss=100;
extern double TakeProfit=00;
extern int TrailingStop=00;
extern int Slippage=3;
//+------------------------------------------------------------------+
//    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,2)<iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,2))&&(iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1)>iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,1))) // Here is your open buy rule
     {
        result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA Generator www.ForexEAdvisor.com",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,2)>iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,2))&&(iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1)<iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,1))) // Here is your open Sell rule
     {
        result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"EA Generator www.ForexEAdvisor.com",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,5,0,MODE_EMA,PRICE_CLOSE,2)>iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,2))&&(iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1)<iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,1))) //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,5,0,MODE_EMA,PRICE_CLOSE,2)<iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,2))&&(iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1)>iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,1))) // 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);
}
Keith Watford
Moderator
10411
Keith Watford  
Use a different magic number for each chart that you attach the EA to
ignatius
10
ignatius  

Dear Mr GumRai

Thank you for your help it's very usefull for me

To add comments, please log in or register