3 EMA and 2 LWMA cross ea

 

Can anyone help with this code im trying to make it enter a trade when the 2 LWMAs cross and #3 ema confirms trend but for some reason the LWMA crosses dont work, can someone look at the code and tell me where i went wroung?

//+------------------------------------------------------------------+
//|                                                    Prodi5MAs.mq4 |
//|                                    Copyright © 2011              |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, PRODI  "
#property link      ""

extern int     EMA1period = 15;
extern int     EMA2period = 20;
extern int     EMA3period = 50;
extern int     LWMA1period = 15;
extern int     LWMA2period = 20;
extern double  valperiod = 15;
extern int GatorJaws = 13;
extern int GatorJawsShift = 8;
extern int TeergJaws = 8;
extern int TeergJawsShift = 5;
extern int LipsJaws = 5;
extern int LipsJawsShift = 3;
extern double GatorUpValue = 0.00110;
extern double GatorDownValue = -0.00110;
extern double RSISLperiod =15;
extern double  Order1Lots = 0;
extern double  Order2Lots = 0;
extern double  Order3Lots = 0;
extern double  Order4Lots = 0;
extern double  Order1TakeProfit = 0;
extern double  Order2TakeProfit = 0;
extern double  Order3TakeProfit = 0;
extern double  MoveSLafterOrder1 = 0;
extern double  MoveSLafterOrder2 = 0;
extern double  MoveSLafterOrder3 = 0;
extern double  TrailingStopForOrder4 = 0;
extern int     StartTradeHour = 0;
extern int     EndTradeHour = 24;
extern int     MagicNumber = 164783;
extern bool    UseEmails = false;

double val=0;

bool cont;
int dig = 1, i, AllOrders, currPos = 0, orderTicket, cycle;
bool ThereIsOrder1, ThereIsOrder2, ThereIsOrder3, ThereIsOrder4;
datetime prevDate;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+


int init()
  {
   if( MarketInfo(Symbol(),MODE_DIGITS) == 3 || MarketInfo(Symbol(),MODE_DIGITS) == 5)
      dig = 10;
   currPos = 0;
   prevDate = Time[0];
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   bool NewBar = isNewBar();

   double EMA1 = iMA(Symbol(), Period(), EMA1period, 0, MODE_EMA, PRICE_OPEN, 1);

   double EMA2 = iMA(Symbol(), Period(), EMA2period, 0, MODE_EMA, PRICE_OPEN, 1);
   
   double EMA3 = iMA(Symbol(), Period(), EMA3period, 0, MODE_EMA, PRICE_OPEN, 1);

   double preEMA1 = iMA(Symbol(), Period(), EMA1period, 0, MODE_EMA, PRICE_OPEN, 2);

   double preEMA2 = iMA(Symbol(), Period(), EMA2period, 0, MODE_EMA, PRICE_OPEN, 2);
   
   double preEMA3 = iMA(Symbol(), Period(), EMA3period, 0, MODE_EMA, PRICE_OPEN, 2); 
   
   double LWMA1 = iMA(Symbol(), Period(), LWMA1period, 0, MODE_LWMA, PRICE_CLOSE, 1);
   
   double LWMA2 = iMA(Symbol(), Period(), LWMA2period, 0, MODE_LWMA, PRICE_OPEN, 1);
   
   double preLWMA1 = iMA(Symbol(), Period(), LWMA1period, 0, MODE_LWMA, PRICE_CLOSE, 2);

   double preLWMA2 = iMA(Symbol(), Period(), LWMA2period, 0, MODE_LWMA, PRICE_OPEN, 2);
   
   double GatorDown = iGator(Symbol(),Period(),GatorJaws,GatorJawsShift,TeergJaws,TeergJawsShift,LipsJaws,LipsJawsShift,MODE_EMA,PRICE_CLOSE,MODE_LOWER,0);
   
   double GatorUp = iGator(Symbol(),Period(),GatorJaws,GatorJawsShift,TeergJaws,TeergJawsShift,LipsJaws,LipsJawsShift,MODE_EMA,PRICE_CLOSE,MODE_UPPER,0);
   
   val = iRVI(NULL, 0, 15,MODE_MAIN,0);
 

   AllOrders = 0;
   ThereIsOrder1 = false;
   ThereIsOrder2 = false;
   ThereIsOrder3 = false;
   ThereIsOrder4 = false;
   
   for ( i = 0; i < OrdersTotal(); i++)
      {
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() )
         {
            AllOrders++;
            if(OrderComment() == "Order 1") ThereIsOrder1 = true;
            if(OrderComment() == "Order 2") ThereIsOrder2 = true;
            if(OrderComment() == "Order 3") ThereIsOrder3 = true;
            if(OrderComment() == "Order 4") ThereIsOrder4 = true;
         }
      }

   for ( i = 0; i < OrdersTotal(); i++)
      {
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

         if(!ThereIsOrder1 && ThereIsOrder2 && ThereIsOrder3 && ThereIsOrder4)
         {
            if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() && ((OrderType() == OP_BUY && OrderStopLoss() != OrderClosePrice() + MoveSLafterOrder1*Point*dig) || (OrderType() == OP_SELL && OrderStopLoss() != OrderClosePrice() - MoveSLafterOrder1*Point*dig)))
            {
               if (OrderType() == OP_BUY) OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + MoveSLafterOrder1*Point*dig, OrderTakeProfit(), 0, NULL); 
               if (OrderType() == OP_SELL) OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - MoveSLafterOrder1*Point*dig, OrderTakeProfit(), 0, NULL); 
            }
         }

         if(!ThereIsOrder1 && !ThereIsOrder2 && ThereIsOrder3 && ThereIsOrder4)
         {
            if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() && ((OrderType() == OP_BUY && OrderStopLoss() < OrderClosePrice() + MoveSLafterOrder2*Point*dig) || (OrderType() == OP_SELL && OrderStopLoss() > OrderClosePrice() - MoveSLafterOrder2*Point*dig)))
            {
               if (OrderType() == OP_BUY) OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + MoveSLafterOrder2*Point*dig, OrderTakeProfit(), 0, NULL); 
               if (OrderType() == OP_SELL) OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - MoveSLafterOrder2*Point*dig, OrderTakeProfit(), 0, NULL); 
            }
         }

         if(!ThereIsOrder1 && !ThereIsOrder2 && !ThereIsOrder3 && ThereIsOrder4 && TrailingStopForOrder4 > 0)
         {
            if (OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol() && ((OrderType() == OP_BUY && OrderStopLoss() < Bid - TrailingStopForOrder4*Point*dig) || (OrderType() == OP_SELL && OrderStopLoss() > Ask + TrailingStopForOrder4*Point*dig )))
            {
               if (OrderType() == OP_BUY) OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TrailingStopForOrder4*Point*dig, OrderTakeProfit(), 0, NULL); 
               if (OrderType() == OP_SELL) OrderModify(OrderTicket(), OrderOpenPrice(), Ask + TrailingStopForOrder4*Point*dig, OrderTakeProfit(), 0, NULL); 
            }
         }


      }

   if (NewBar && ((currPos <= 0 && EMA1 > EMA2 && EMA1 > EMA3 && (preEMA1 <= preEMA2 || preEMA1 <= preEMA3) && val > 0 && CheckTime()) || ((LWMA1 > LWMA2 && EMA1 && preLWMA1 <= preLWMA2 )> EMA3 && val > 0 && !ThereIsOrder1 && !ThereIsOrder2 && !ThereIsOrder3 && !ThereIsOrder4)) )
  
   {
      CloseAll();
      Open_Buy(Ask + Order1TakeProfit*Point*dig, Order1Lots, "Order 1");
      Open_Buy(Ask+ Order2TakeProfit*Point*dig, Order2Lots, "Order 2");
      Open_Buy(Ask+ Order3TakeProfit*Point*dig, Order3Lots, "Order 3");
      Open_Buy(0, Order4Lots, "Order 4");
      currPos = 1;
      if (UseEmails && !IsTesting() && !IsOptimization()) SendMail("Orders Opened At " + Symbol() + " Buy: " + DoubleToStr(Ask, Digits), TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES));                
   }  

   if (NewBar && ((currPos >= 0 && EMA1 < EMA2 && EMA1 < EMA3 && (preEMA1 >= preEMA2 || preEMA1 >= preEMA3) && val < 0 &&  CheckTime()) || ((LWMA1 < LWMA2 && preLWMA1 >= preLWMA2)< EMA3  && val < 0 && !ThereIsOrder1 && !ThereIsOrder2 && !ThereIsOrder3 && !ThereIsOrder4)) )
   
   {
      CloseAll();
      
      Open_Sell(Bid - Order1TakeProfit*Point*dig, Order1Lots, "Order 1"); 
      Open_Sell(Bid - Order2TakeProfit*Point*dig, Order2Lots, "Order 2");
      Open_Sell(Bid - Order3TakeProfit*Point*dig, Order3Lots, "Order 3"); 
      Open_Sell(0, Order4Lots, "Order 4");
      currPos = -1;
      if (UseEmails && !IsTesting() && !IsOptimization()) SendMail("Orders Opened At " + Symbol() + " Sell: " + DoubleToStr(Bid, Digits), TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES));
      
  }   

     if (iRSI(NULL,0,RSISLperiod,PRICE_CLOSE,0) <= 50 && AllOrders > 0)
      CloseOneSize(OP_BUY);

   if (iRSI(NULL,0,RSISLperiod,PRICE_CLOSE,0) >= 50 && AllOrders > 0)
      CloseOneSize(OP_SELL);

   return(0);
 
   
  }
 

disregard the "&& EMA1 && " in >>>((LWMA1 > LWMA2 && EMA1 && preLWMA1 <= preLWMA2 )> EMA3 . that was a typo while pasting it into forum

 
  1. Don't double post.

  2. Instead of using the EDIT button and fixing your posting, HOW do you expect anyone to help you?
  3. https://www.mql5.com/en/forum/135236
Reason: