Ema





//+------------------------------------------------------------------+
//|                                                    Parabolic.mq4 |
//|                                                          Âèòàëèê |
//|                                                   wwwita@mail.ru |
//+------------------------------------------------------------------+
extern double     Lots=0.1;
extern double      Pip=5;
extern double MoveBack=3;
extern int         chk=0;
extern double       SL=20;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double hi=High[1];
   double lo=Low[1];
   double EMA, EMA1, EMA2, EMA3;
   int cnt=0, ticket, total;
   EMA=iMA(0,0,5,0,MODE_EMA,PRICE_MEDIAN,1);
   EMA1=iMA(0,0,10,0,MODE_EMA,PRICE_MEDIAN,1);
   EMA2=iMA(0,0,5,0,MODE_EMA,PRICE_MEDIAN,0);
   EMA3=iMA(0,0,10,0,MODE_EMA,PRICE_MEDIAN,0);
   total=OrdersTotal();
   if(total<1)
     {
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("Ó âàñ íåò äåíåã. Ñâîáîäíûå ñðåäñòâà = ", AccountFreeMargin());
         return(0);
        }
      if(((EMA>EMA1) && (EMA2<EMA3)) || ((EMA<EMA1) && (EMA2>EMA3)))
        {
         chk=1;
         Print("Ïîçèöèÿ âîçìîæíà!");
        }
      if(chk==1)
        {
         if(EMA3-EMA2>2*Point && Bid>=(lo+MoveBack*Point))
           {
            ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,
            "EMA position:",16385,0,Red);
            if(ticket>0)
              {
               if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                  Print("Îòêðûò îðäåð SELL : ",OrderOpenPrice());
               chk=0;
              }
            else
              {
               Print("Îøèáêà îòêðûòèÿ SELL îðäåðà : ",GetLastError());
               return(0);
              }
           }
         if(EMA2-EMA3>2*Point && Ask<=(hi-MoveBack*Point))
           {
            ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,
            "EMA position:",16385,0,Green);
            if(ticket>0)
              {
               if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
                  Print("Îòêðûò îðäåð BUY : ",OrderOpenPrice());
               chk=0;
              }
            else
              {
               Print("Îøèáêà îòêðûòèÿ BUY îðäåðà : ",GetLastError());
               return(0);
              }
           }
        }
      return(0);
     }
   for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // ýòî îòêðûòàÿ ïîçèöèÿ? OP_BUY èëè OP_SELL 
         OrderSymbol()==Symbol())  // èíñòðóìåíò ñîâïàäàåò?
        {
         if(OrderType()==OP_BUY)   // îòêðûòà äëèííàÿ ïîçèöèÿ
           {
            // ïðîâåðèì, ìîæåò óæå ïîðà çàêðûâàòüñÿ?
            if(Bid>=(OrderOpenPrice()+Pip*Point))
              {
               chk=0;
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // çàêðûâàåì ïîçèöèþ
               return(0); // âûõîäèì
              }
            if(Bid<=(OrderOpenPrice()-SL*Point))
              {
               chk=0;
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // çàêðûâàåì ïîçèöèþ
               return(0); // âûõîäèì
              }
           }
         else // èíà÷å ýòî êîðîòêàÿ ïîçèöèÿ
           {
            // ïðîâåðèì, ìîæåò óæå ïîðà çàêðûâàòüñÿ?
            if(Ask<=(OrderOpenPrice()-Pip*Point))
              {
               chk=0;
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // çàêðûâàåì ïîçèöèþ
               return(0); // âûõîäèì
              }
            if(Ask>=(OrderOpenPrice()+SL*Point))
              {
               chk=0;
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // çàêðûâàåì ïîçèöèþ
               return(0); // âûõîäèì
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar


Indicator Curves created:


Indicators Used:

Moving average indicator


Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself

Other Features: