Abovebelowma_www[1].forex-instruments.info





//+------------------------------------------------------------------+
//|                                                                  |
//|                 Copyright © 1999-2007, MetaQuotes Software Corp. |
//|                                         http://www.metaquotes.ru |
//+------------------------------------------------------------------+
#property copyright "AD"
#property link      ""
//----
double Lots=1;
// Åñòü ëè îòêðûòûå ñîâåòíèêîì îðäåðà? Åñëè åñòü, òî: èëè çàêðûâàåì, èëè çàïðåùàåì îòêðûâàòü íîâûé
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CheckOrders(int Type)
  {
   int ticket,i;
   bool Result;
//----
   Result=True;
   if(OrdersTotal()!=0)
     {
      for(i=0;i<OrdersTotal();i++)
        {
         ticket=OrderSelect(i,SELECT_BY_POS);
         if(OrderMagicNumber()==553)
           {
            if(OrderType()==Type)
              {
               if(Type==OP_BUY)
                 {
                  if(OrderClose(OrderTicket(),OrderLots(),Bid,10)==False)
                     Result=False;
                 }
               if(Type==OP_SELL)
                 {
                  if(OrderClose(OrderTicket(),OrderLots(),Ask,20)==False)
                     Result=False;
                 }
              }
            else Result=False;
           }
        }
     }
   return(Result);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double MA, MAPrev;
   int ticket;
//----
   MA=iMA("GBPUSD",15,1,0,MODE_EMA,PRICE_TYPICAL,0);
   MAPrev=iMA("GBPUSD",15,1,0,MODE_EMA,PRICE_TYPICAL,1);
   // Îòêðûòèå ââåðõ
   if(Open[0]<MA-Point && Ask<MA)
      if(CheckOrders(OP_SELL)==True && MAPrev<MA)
        {
         Lots=NormalizeDouble(AccountFreeMargin()/10000, 1);
         if(Lots>5)
            Lots=5;
         ticket=OrderSend("GBPUSD",OP_BUY,Lots,Ask,10,0,0,NULL,553);
         if(ticket<0)
            Print("Íå óäàëîñü îòêðûòü îðäåð BUY. Îøèáêà N", GetLastError());
        }
   // Îòêðûòèå âíèç
   if(Open[0]>MA+Point && Bid>MA)
      if(CheckOrders(OP_BUY)==True && MAPrev>MA)
        {
         Lots=NormalizeDouble(AccountFreeMargin()/10000, 1);
         if(Lots>5)
            Lots=5;
         ticket=OrderSend("GBPUSD",OP_SELL,Lots,Bid,10,0,0,NULL,553);
         if(ticket<0)
            Print("Íå óäàëîñü îòêðûòü îðäåð SELL. Îøèáêà N", GetLastError());
        }
//----
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains open 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
It automatically opens orders when conditions are reached

Other Features: