Friday, December 17, 2021

21 period high low with 9 and 20 ma crossover mt4

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

//|                                                       21 period  high low with 9 and 20 ma crossover mq4 |

//|                        Copyright 2021, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

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

#property copyright "Copyright 2021, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict

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

//| Expert initialization function                                   |

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

extern int MagicNumber=10001;

extern double Lots =0.01;

extern double StopLoss=0;

extern double TakeProfit=0;

extern int TrailingStop=2;

extern int Slippage=3;

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

//    expert start function

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

int start()

{

  double MyPoint=Point;

  if(Digits==3 || Digits==5) MyPoint=Point*10;

  double high21 = High[iHighest(NULL, 0, MODE_HIGH, 21, 1)];   

  double low21 = Low[iLowest(NULL, 0, MODE_LOW, 21, 1)];

  double volumeh = High[iHighest(NULL, 0, MODE_VOLUME, 5, 1)];

  double volumel = Low[iHighest(NULL, 0, MODE_VOLUME, 5, 1)];

  double buybase = High[iLowest(NULL, 0, MODE_LOW, 21, 1)];

  double sellbase = Low[iHighest(NULL, 0, MODE_HIGH, 21, 1)];

  double ma9 = iMA(NULL,0,9,0,MODE_EMA,PRICE_TYPICAL ,0);

  double ma20 = iMA(NULL,0,20,0,MODE_EMA,PRICE_TYPICAL ,0);

  double speared =DoubleToStr(Ask-Bid,Digits);

  double vhvl =DoubleToStr(volumeh-volumel,Digits);

  double btar =DoubleToStr(Ask+speared,Digits);

  double star =DoubleToStr(Bid-speared,Digits);

  double bstop = DoubleToStr(Low[1]-speared,Digits);

  double sstop = DoubleToStr(High[1]+speared,Digits);

  double bstoploss = 0;  

  if(btar > bstop){ bstoploss = bstop;} else { bstoploss = btar;}

  double sstoploss = 0;  

  if(star < sstop){ sstoploss = sstop;} else { sstoploss = star;}

  double TheStopLoss=0;

  double TheTakeProfit=0;

  if( TotalOrdersCount()==0 ) 

  {

     int result=0;

    if(Close[1] > ma9 && Close[1] > ma20 && buybase < Ask && sellbase > Ask && Ask > High[1]) // Here is your open buy rule

     {

        result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,bstoploss,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(Close[1] < ma20 && Close[1] < ma9 && sellbase > Bid && star < Bid && Bid < Low[1]) // Here is your open Sell rule

     {

        result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sstoploss,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);

     }

  }

  double rsi = iRSI(NULL,0,14,PRICE_CLOSE,0);

  

  Comment(" speared " , speared , " high21 " , high21 , " low21 " , low21, " volumeh " , volumeh, " volumel ", volumel, " buybase " , buybase , " sellbase " , sellbase , " bstoploss " , bstoploss , " sstoploss " , sstoploss);

  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( Low[1] < Bid) //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);

                     OrderModify(OrderTicket(),OrderOpenPrice(),bstoploss,OrderTakeProfit(),0,Green);

                     return(0);

                    }

                 }

              }

           }

         else 

           {

                if(High[1]<Ask) // 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(),sstoploss,OrderTakeProfit(),0,Red);

                     //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);

}

Friday, November 19, 2021

9 SMA and 20 SMA Crossover with last candle stoploss

In this ea use  9sma  above 20 and stoploss is last candle low for buy position and last candle high stoploss for sell position.



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

//|                                              4 sma crossover.mq4 |

//|                        Copyright 2021, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

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

#property copyright "Copyright 2021, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict

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

//| Expert initialization function                                   |

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

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



extern int MagicNumber=10001;

extern double Lots =0.01;

extern double StopLoss=5;

extern double TakeProfit=50;

extern int TrailingStop=50;

extern int Slippage=3;

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

//    expert start function

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

int start()

{

  double MyPoint=Point;

  if(Digits==3 || Digits==5) MyPoint=Point*10;

  double lastclose = 0;

  int i = OrdersHistoryTotal(); 

  int a = OrdersHistoryTotal() - 1;

  int b = OrdersHistoryTotal();

   

  for (i = a;i < b ;i++)

     {

           if (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY) == true)

              {      

                

                 //Alert("orders found"+ OrderTicket() + " " + OrderCloseTime() + " " + OrderOpenPrice());

                 lastclose = OrderCloseTime();

              

              }

     }

  double high5 = High[iHighest(NULL, 0, MODE_HIGH, 5, 1)];   

  double low5 = Low[iLowest(NULL, 0, MODE_LOW, 5, 1)];

  double last1 = iTime(NULL,0,1);

  double last2 = iTime(NULL,0,2);

  double ntime = last1-last2;

  double nexttime = ntime+lastclose;

  double last0 = iTime(NULL,0,0);

  double TheStopLoss=0;

  double TheTakeProfit=0;

  if( TotalOrdersCount()==0) 

  {

     int result=0;

     if(last0 > nexttime && (iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0)>iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0))&& iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0) >= Low[1] && High[1] >= iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0) &&(Ask>High[1]) && high5 < Ask) // Here is your open buy rule

     {

        result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA Generator www.strategyon.co.in",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(last0 > nexttime && (iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0)>iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0))&&(iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0)>=Low[1])&& High[1] >= iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0) &&(Low[1]>Bid) && low5 > Bid) // Here is your open Sell rule

     {

      result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"EA Generator www.strategyon.co.in",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);

     }

  }

Comment("totalorder " , TotalOrdersCount(), " balance " , AccountBalance(), " equity " , AccountEquity() , "last ",lastclose, " close " , ntime , " next " ,nexttime , " last0 " , last0, "high5 " ,high5 , "low5 " ,low5);  

  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((AccountEquity() > AccountBalance() && Close[1]<iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0)) || iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0) < iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0)) //here is your close buy rule

              {

                   OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red);

              }

            if(TrailingStop>0)  

              {                  //buy trailing start

               if(OrderOpenPrice()<Low[1])

                 {

                  if(OrderStopLoss()<Low[1])

                    {

                   //  OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);

                     OrderModify(OrderTicket(),OrderOpenPrice(),Low[1],OrderTakeProfit(),0,Green);

                     return(0);

                    }

                 }

              }

           }

         else 

           { //sell trailing start

                if((AccountEquity() > AccountBalance() && Close[1]>iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0)) || iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0)>iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0)) // here is your close sell rule

                {

                   OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red);

                }

            if(TrailingStop>0)  

              {                 

               if((OrderOpenPrice())> High[1])

                 {

                  if((OrderStopLoss()>(High[1])) || (OrderStopLoss()==0))

                    {

                     //OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);

                     OrderModify(OrderTicket(),OrderOpenPrice(),High[1],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);

  

Wednesday, November 17, 2021

4 SMA Crossover

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

extern int MagicNumber=10001;
extern double Lots =0.01;
extern double StopLoss=50;
extern double TakeProfit=50;
extern int TrailingStop=50;
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,9,0,MODE_SMA,PRICE_CLOSE,0)>iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0))&&(iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0)>iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0))&&(iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0)>iMA(NULL,0,100,0,MODE_SMA,PRICE_CLOSE,0))&&(Close[1]>iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0))&&(Ask>High[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,100,0,MODE_SMA,PRICE_CLOSE,0)>iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0))&&(iMA(NULL,0,50,0,MODE_SMA,PRICE_CLOSE,0)>iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0))&&(iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0)>iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0))&&(iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0)>Close[1])&&(Close[1]>Bid)) // 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((Close[1]>iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0))&&(Bid<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((Close[1]>iMA(NULL,0,9,0,MODE_SMA,PRICE_CLOSE,0))&&(Ask>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);
}

Sunday, November 7, 2021

Pivot Point ( for 15 minutes timeframe ) ea for mt4

Pivot Point ( for 15 minutes timeframe )  ea for mt4

BUY ENTRY : last low < pivot point and ask > pivot point and ask above last high price then open BUY position.

BUY EXIT : Hit target or last low > ask

SELL ENTRY : last high > pivot point and bid < pivot point and bid below last low price then open SELL position.

SELL EXIT : Hit target or last high > bid

Default Setting:

MagicNumber=10001

Lots = 0.1

StopLoss=50

TakeProfit=50

TrailingStop=50

You can change setting as per your need. 


Code start here : 

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

// USE THIS EA AT YOUR OWN RISK. 

//  

// Before adding this expert advisor to a chart, make sure there are NO

// open positions.

//                      DO NOT DELETE THIS HEADER

//             DELETING THIS HEADER IS COPYRIGHT STRATEGYON.CO.IN 

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



extern int MagicNumber=10001;

extern double Lots =0.1;

extern double StopLoss=50;

extern double TakeProfit=50;

extern int TrailingStop=50;

extern int Slippage=3;

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

//    expert start function

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

int start()

{

  double MyPoint=Point;

  if(Digits==3 || Digits==5) MyPoint=Point*10;

  double close = iClose(Symbol(),PERIOD_D1,1);

  double low = iLow(Symbol(),PERIOD_D1,1);

  double high = iHigh(Symbol(),PERIOD_D1,1);

  double pivot = (close+low+high)/3;

  double TheStopLoss=0;

  double TheTakeProfit=0;

  if( TotalOrdersCount()==0 ) 

  {

     int result=0;

    // if((iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,0)<Close[1])&&(High[1]<Ask)) // Here is your open buy rule

     if((Low[1] <= pivot) &&(High[1]<Ask) &&(pivot<Ask)) // Here is your open buy rule

     {

        result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA provided by www.strategyon.co.in",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,9,0,MODE_EMA,PRICE_CLOSE,0)>Close[1])&&(Low[1]>Bid)) // Here is your open Sell rule

     if((High[1] >= pivot) &&(Low[1]>Bid) &&(pivot>Bid))

     {

        result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"EA provided by www.strategyon.co.in",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);

     }

  }

Comment ("The last day close is :", close , " low " , low , " high " , high , " pivot ",pivot );  

  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,9,0,MODE_EMA,PRICE_CLOSE,0)>Bid)) //here is your close buy rule

              if(Low[1]>Bid) //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,9,0,MODE_EMA,PRICE_CLOSE,0)<Ask)) // here is your close sell rule

                if(High[1]<Bid) // 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);

  }

  

Friday, November 5, 2021

Crossover 9 EMA and 20 EMA

Crossover 9 EMA and 20 EMA ( exponential moving average )  ea for mt4

BUY ENTRY : precious 9 ema < previous 20 ema and current 9 ema > current 20 ema and Last close above 9 ema and ask above last high price then open BUY position.

BUY EXIT : Hit target or current 9 ema < current 20 ema

SELL ENTRY : precious 9 ema > previous 20 ema and current 9 ema < current 20 ema and Last close below 9 ema and bid below last low price then open SELL position.

SELL EXIT : Hit target or current 9 ema > current 20 ema

Default Setting:

MagicNumber=10001

Lots = 0.1

StopLoss=50

TakeProfit=50

TrailingStop=50

You can change setting as per your need.




Code start here : 

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

// USE THIS EA AT YOUR OWN RISK. 

//  

// Before adding this expert advisor to a chart, make sure there are NO

// open positions.

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



extern int MagicNumber=10001;

extern double Lots =0.1;

extern double StopLoss=50;

extern double TakeProfit=50;

extern int TrailingStop=50;

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,9,0,MODE_EMA,PRICE_CLOSE,0)>iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,0))&&(iMA(NULL,0,9,1,MODE_EMA,PRICE_CLOSE,0)<iMA(NULL,0,20,1,MODE_EMA,PRICE_CLOSE,0))&&(Close[1]>iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,0))&&(High[1]<Ask)) // 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,9,0,MODE_EMA,PRICE_CLOSE,0)<iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,0))&&(iMA(NULL,0,9,1,MODE_EMA,PRICE_CLOSE,1)>iMA(NULL,0,20,1,MODE_EMA,PRICE_CLOSE,0))&&(Close[1]<iMA(NULL,0,9,0,MODE_EMA,PRICE_CLOSE,0))&&(Low[1]>Bid)) // 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,9,0,MODE_EMA,PRICE_CLOSE,0)<iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,0))) //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,9,0,MODE_EMA,PRICE_CLOSE,0)>iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,0))) // 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);

9 EMA EA for MT4

9 EMA ( exponential moving average )  ea for mt4

BUY ENTRY : Last close above 9 ema and ask above last high price then open BUY position.

SELL ENTRY : Last close below 9 ema and bid below last low price then open SELL position.

Default Setting:

MagicNumber=10001

Lots = 0.1

StopLoss=50

TakeProfit=50

TrailingStop=50

You can change setting as per your need.




CODE start :
// USE THIS EA AT YOUR OWN RISK. 
//  
// Before adding this expert advisor to a chart, make sure there are NO
// open positions.
//                      DO NOT DELETE THIS HEADER
//             DELETING THIS HEADER IS COPYRIGHT INFRIGMENT 
//+------------------------------------------------------------------+


extern int MagicNumber=10001;
extern double Lots =0.1;
extern double StopLoss=50;
extern double TakeProfit=50;
extern int TrailingStop=50;
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,9,0,MODE_EMA,PRICE_CLOSE,0)<Close[1])&&(High[1]<Ask)) // 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,9,0,MODE_EMA,PRICE_CLOSE,0)>Close[1])&&(Low[1]>Bid)) // 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,9,0,MODE_EMA,PRICE_CLOSE,0)>Bid)) //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,9,0,MODE_EMA,PRICE_CLOSE,0)<Ask)) // 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);
  }