MACD MT4 EA technical errors

 

Hi guys? Iam sorry my MT4 Evaluation Terminal takes me to MT5. Please how should I resolve the below technical errors? The EA has no errors but it is not trading.I shall appreciate if you would advise me on how to fix the technical errors.Below are the images of some of the results that I am getting on my PC.Thanks in advance.

//+------------------------------------------------------------------+

//|                                                  MACD Sample.mq4 |

//|                   Copyright 2005-2014, MetaQuotes Software Corp. |

//|                                              http://www.mql4.com |

//+------------------------------------------------------------------+

#property copyright   "2005-2014, MetaQuotes Software Corp."

#property link        "http://www.mql4.com"



input double TakeProfit    =50;

input double Lots          =0.1;

  input double StopLoss=40;

input double TrailingStop  =30;

input double MACDOpenLevel =3;

input double MACDCloseLevel=2;

input int    MATrendPeriod =26;

//+------------------------------------------------------------------+

//|                                                                  |

//+------------------------------------------------------------------+

void OnTick(void)

  {

   double MacdCurrent,MacdPrevious;

   double SignalCurrent,SignalPrevious;

   double MaCurrent,MaPrevious;

   int    cnt,ticket,total;

//---

// initial data checks

// it is important to make sure that the expert works with a normal

// chart and the user did not make any mistakes setting external 

// variables (Lots, StopLoss, TakeProfit, 

// TrailingStop) in our case, we check TakeProfit

// on a chart of less than 100 bars

//---

   if(Bars<100)

     {

      Print("bars less than 100");

      return;

     }

   if(TakeProfit<10)

     {

      Print("TakeProfit less than 10");

      return;

     }

//--- to simplify the coding and speed up access data are put into internal variables

   MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);

   MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);

   SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);

   SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

   MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);

   MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);



   total=OrdersTotal();

   if(total<1)

     {

      //--- no opened orders identified

      if(AccountFreeMargin()<(1000*Lots))

        {

         Print("We have no money. Free Margin = ",AccountFreeMargin());

         return;

        }

      //--- check for long position (BUY) possibility

      if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && 

         MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

        {

         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);

         if(ticket>0)

           {

            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

               Print("BUY order opened : ",OrderOpenPrice());

           }

         else

            Print("Error opening BUY order : ",GetLastError());

         return;

        }

      //--- check for short position (SELL) possibility

      if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && 

         MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)

        {

         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);

         if(ticket>0)

           {

            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

               Print("SELL order opened : ",OrderOpenPrice());

           }

         else

            Print("Error opening SELL order : ",GetLastError());

        }

      //--- exit from the "no opened orders" block

      return;

     }

//--- it is important to enter the market correctly, but it is more important to exit it correctly...   

   for(cnt=0;cnt<total;cnt++)

     {

      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))

         continue;

      if(OrderType()<=OP_SELL &&   // check for opened position 

         OrderSymbol()==Symbol())  // check for symbol

        {

         //--- long position is opened

         if(OrderType()==OP_BUY)

           {

            //--- should it be closed?

            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && 

               MacdCurrent>(MACDCloseLevel*Point))

              {

               //--- close order and exit

               if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))

                  Print("OrderClose error ",GetLastError());

               return;

              }

            //--- check for trailing stop

            if(TrailingStop>0)

              {

               if(Bid-OrderOpenPrice()>Point*TrailingStop)

                 {

                  if(OrderStopLoss()<Bid-Point*TrailingStop)

                    {

                     //--- modify order and exit

                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))

                        Print("OrderModify error ",GetLastError());

                     return;

                    }

                 }

              }

           }

         else // go to short position

           {

            //--- should it be closed?

            if(MacdCurrent<0 && MacdCurrent>SignalCurrent && 

               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))

              {

               //--- close order and exit

               if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))

                  Print("OrderClose error ",GetLastError());

               return;

              }

            //--- check for trailing stop

            if(TrailingStop>0)

              {

               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

                 {

                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

                    {

                     //--- modify order and exit

                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))

                        Print("OrderModify error ",GetLastError());

                     return;

                    }

                 }

              }

           }

        }

     }

//---

  }

//+------------------------------------------------------------------+


Purple Trading screenshot

 
JESSE TANU: ? Iam sorry my MT4 Evaluation Terminal takes me to MT5.
  1. Why did you post your MT4 question in the MT5 General section instead of the MQL4 section, (bottom of the Root page)?
              General rules and best pratices of the Forum. - General - MQL5 programming forum? (2017)
    Next time, post in the correct place. The moderators will likely move this thread there soon.

  2. There is no such thing as an "evaluation terminal." There is only the current version of the terminal. Whether you run on a demo account or real, it is the same terminal.

  3. If you had used this (before posting), you would have found (among 300+) Where to download MT4? - General - MQL5 programming forum (2017)
       How To Ask Questions The Smart Way. (2004)
          How To Interpret Answers.
             RTFM and STFW: How To Tell You've Seriously Screwed Up.

    It has been years since you could download MT4 from Metaquotes. You can only get it from a broker's website.
              Where to download the orginal MT4 installer - MQL4 programming forum (2018)

    Possibly MetaQuotes' MT4 Installation Link

  4. JESSE TANU: Please how should I resolve the below technical errors? The EA has no errors but it is not trading.I shall appreciate if you would advise me on how to fix the technical errors.Below are the images of some of the results that I am getting on my PC.

    Do you really expect an answer? There are no mind readers here and our crystal balls are cracked. Your images are useless and you haven't stated a problem.

  5. Use the debugger or print out your variables, including _LastError and prices and find out why. Do you really expect us to debug your code for you?
              Code debugging - Developing programs - MetaEditor Help
              Error Handling and Logging in MQL5 - MQL5 Articles (2015)
              Tracing, Debugging and Structural Analysis of Source Code - MQL5 Articles (2011)
              Introduction to MQL5: How to write simple Expert Advisor and Custom Indicator - MQL5 Articles (2010)