Help!!!

 

I try to create an EA basing on the cross of 5 MA and stochastic. Someone can help me?

Please!!!

The code:


//+------------------------------------------------------------------+
//| MA_Cross_Stoch.mq5
//| Copyright © 2019, LAWSON Oma. Email: aveomer@gmail.com 
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, LAWSON Oma"
#property link      "aveomer@gmail.com" 

// MA periods
extern int     EMA_period_1=5;
extern int     EMA_period_2=8; 
extern int     EMA_period_3=13;
extern int     EMA_period_4=21;
extern int     LWEMA_period_5=200; 
extern int     MA_Trigger=5;

// Parameters
double EMA5;
double EMA8;
double EMA13;
double EMA21; 
double LWEMA200;
double EMA5P;
double EMA8P;
double EMA13P;
double PEMA21P;
double LWEMA200P;

// Slow Stochastic input values 
extern int     Kperiod =9;
extern int     Dperiod=3;
extern int     slowing=3; 

// Define the maximum alowwable stoploss and tradesize (number of lots traded)
extern double  Stoploss = 100;
extern double  Takeprofit = 100; 
extern double  Tradesize=0.1;

// Define the magic number
extern int     Magic_number = 999; 

int init ()
{
  return(0);
}

int deinit()
{
  return(0);
}    

// Subroutine to determine if the entry rules are met, place take profit and stoploss values when you open the order 
void MA_Cross_Entry()

   {
   int ticket;  
   double EMA5 = iMA(NULL, 0, EMA_period_1, 0, MODE_EMA, PRICE_MEDIAN, 0); 
   double EMA8 = iMA(NULL, 0, EMA_period_2, 0, MODE_EMA, PRICE_MEDIAN, 0); 
   double EMA13 = iMA(NULL, 0, EMA_period_3, 0, MODE_EMA, PRICE_MEDIAN, 0); 
   double EMA21 = iMA(NULL, 0, EMA_period_4, 0, MODE_EMA, PRICE_MEDIAN, 0); 
   double LWEMA200 = iMA(NULL, 0, LWEMA_period_5, 0, MODE_LWMA, PRICE_MEDIAN, 0); 
   double EMA5P = iMA(NULL, 0, EMA_period_1, 0, MODE_EMA, PRICE_MEDIAN, 1); 
   double EMA8P = iMA(NULL, 0, EMA_period_2, 0, MODE_EMA, PRICE_MEDIAN, 1); 
   double EMA13P = iMA(NULL, 0, EMA_period_3, 0, MODE_EMA, PRICE_MEDIAN, 1); 
   double EMA21P = iMA(NULL, 0, EMA_period_4, 0, MODE_EMA, PRICE_MEDIAN, 1); 
   double LWEMA200P = iMA(NULL, 0, LWEMA_period_5, 0, MODE_LWMA, PRICE_MEDIAN, 1); 
  
   double StochMain = iStochastic(NULL, 0, Kperiod, Dperiod, slowing, MODE_SMA, 0, MODE_MAIN,0); 
      
   if(EMA5 > LWEMA200+MA_Trigger*Point && EMA5P < LWEMA200P+MA_Trigger*Point && StochMain < 80 && OrdersTotal()<1); 
   if(EMA8 > LWEMA200+MA_Trigger*Point && EMA8P < LWEMA200P+MA_Trigger*Point && StochMain < 80 && OrdersTotal()<1); 
   if(EMA13 > LWEMA200+MA_Trigger*Point && EMA13P < LWEMA200P+MA_Trigger*Point && StochMain < 80 && OrdersTotal()<1); 
   if(EMA21 > LWEMA200+MA_Trigger*Point && EMA21P < LWEMA200P+MA_Trigger*Point && StochMain < 80 && OrdersTotal()<1) 
      {   
      ticket=OrderSend(Symbol(),OP_BUY,Tradesize,Ask,5,Ask-Stoploss*Point,Ask+Takeprofit*Point,0,Magic_number,0,Green); 
      }
   if(EMA5 < LWEMA200-MA_Trigger*Point && EMA5P > LWEMA200P-MA_Trigger*Point && StochMain > 20 && OrdersTotal()<1); 
   if(EMA8 < LWEMA200-MA_Trigger*Point && EMA8P > LWEMA200P-MA_Trigger*Point && StochMain > 20 && OrdersTotal()<1); 
   if(EMA13 < LWEMA200-MA_Trigger*Point && EMA13P > LWEMA200P-MA_Trigger*Point && StochMain > 20 && OrdersTotal()<1); 
   if(EMA21 < LWEMA200-MA_Trigger*Point && EMA21P > LWEMA200P-MA_Trigger*Point && StochMain > 20 && OrdersTotal()<1) 
      {               
      ticket=OrderSend(Symbol(),OP_SELL,Tradesize,Bid,5,Bid+Stoploss*Point,Bid-Takeprofit*Point,0,Magic_number,0,Red); 
      }
   } 
   
void MA_Cross_Exit()
   {
   double EMA5 = iMA(NULL, 0, EMA_period_1, 0, MODE_EMA, PRICE_MEDIAN, 0); 
   double EMA8 = iMA(NULL, 0, EMA_period_2, 0, MODE_EMA, PRICE_MEDIAN, 0);
   double EMA13 = iMA(NULL, 0, EMA_period_3, 0, MODE_EMA, PRICE_MEDIAN, 0); 
   double EMA21 = iMA(NULL, 0, EMA_period_4, 0, MODE_EMA, PRICE_MEDIAN, 0);
   double LWMEA200 = iMA(NULL, 0, LWEMA_period_5, 0, MODE_LWMA, PRICE_MEDIAN, 0); 
   double EMA5P = iMA(NULL, 0, EMA_period_1, 0, MODE_EMA, PRICE_MEDIAN, 1);
   double EMA8P = iMA(NULL, 0, EMA_period_2, 0, MODE_EMA, PRICE_MEDIAN, 1); 
   double EMA13P = iMA(NULL, 0, EMA_period_3, 0, MODE_EMA, PRICE_MEDIAN, 1);
   double EMA21P = iMA(NULL, 0, EMA_period_4, 0, MODE_EMA, PRICE_MEDIAN, 1); 
   double LWEMA200P = iMA(NULL, 0, LWEMA_period_5, 0, MODE_LWMA, PRICE_MEDIAN, 1);
   int   total; 
   total = OrdersTotal();
   if(total>0)
      {
      for(int pos=0;pos<total;pos++) 
         {
         OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
         if(OrderType()==OP_BUY && OrderMagicNumber()==Magic_number && total==1) 
            {
            if (Ask-Stoploss*Point>OrderStopLoss())
               {               
               OrderModify(OrderTicket(),OrderOpenPrice(),Ask-Stoploss*Point,OrderTakeProfit(),0,Green);
               }
            if(EMA5 < LWEMA200-MA_Trigger*Point && EMA5P > LWEMA200P-MA_Trigger*Point); 
            if(EMA8 < LWEMA200-MA_Trigger*Point && EMA8P > LWEMA200P-MA_Trigger*Point);
            if(EMA13 < LWEMA200-MA_Trigger*Point && EMA13P > LWEMA200P-MA_Trigger*Point); 
            if(EMA21 < LWEMA200-MA_Trigger*Point && EMA21P > LWEMA200P-MA_Trigger*Point)
               {              
               OrderClose(OrderTicket(),OrderLots(),Bid,5,CLR_NONE);
               } 
            return(0);                                            
            }
         if(OrderType()==OP_SELL && OrderMagicNumber()==Magic_number && total==1) 
            {
            if (Bid+Stoploss*Point<OrderStopLoss())
               {               
               OrderModify(OrderTicket(),OrderOpenPrice(),Bid+Stoploss*Point,OrderTakeProfit(),0,Green);
               }
            if(EMA5 > LWEMA200+MA_Trigger*Point && EMA5P < LWEMA200P+MA_Trigger*Point); 
            if(EMA8 > LWEMA200+MA_Trigger*Point && EMA8P < LWEMA200P+MA_Trigger*Point);
            if(EMA13 > LWEMA200+MA_Trigger*Point && EMA13P < LWEMA200P+MA_Trigger*Point); 
            if(EMA21 > LWEMA200+MA_Trigger*Point && EMA21P < LWEMA200P+MA_Trigger*Point)
               {                       
               OrderClose(OrderTicket(),OrderLots(),Ask,5,CLR_NONE);
             
               }        
            }
         }
      } 
   }

int start()
{  
   MA_Cross_Exit();    
   MA_Cross_Entry();   
   return (0);
}
 

Don't forget to use the code button to insert your code.



 
  1. Please edit your (original) post and use the CODE button (Alt-S)! (For large amounts of code, attach it.)
              General rules and best pratices of the Forum. - General - MQL5 programming forum
              Messages Editor

  2. Your code
     Meaning
    if(EMA5 < LWEMA200-MA_Trigger*Point && EMA5P > LWEMA200P-MA_Trigger*Point); 
    if(EMA8 < LWEMA200-MA_Trigger*Point && EMA8P > LWEMA200P-MA_Trigger*Point);
    if(EMA13 < LWEMA200-MA_Trigger*Point && EMA13P > LWEMA200P-MA_Trigger*Point); 
    if(EMA21 < LWEMA200-MA_Trigger*Point && EMA21P > LWEMA200P-MA_Trigger*Point)
    if(EMA5…)  DO NOTHING; 
    if(EMA8…)  DO NOTHING;
    if(EMA13…) DO NOTHING; 
    if(EMA21…){closeTheOrder;}
    Same mistake four times.

  3. && OrdersTotal()<1);
    Using OrdersTotal (or OrdersHistoryTotal) directly and/or no Magic number filtering on your OrderSelect loop means your code is incompatible with every EA (including itself on other charts and manual trading.)
              Symbol Doesn't equal Ordersymbol when another currency is added to another seperate chart . - MQL4 programming forum
              MagicNumber: "Magic" Identifier of the Order - MQL4 Articles


  4. Lawson_Oma: Someone can help me?
    Help you with what? You haven't stated a problem, There are no mind readers here and our crystal balls are cracked.
 
Define the problem for which you need help..