MA_Channel





//+------------------------------------------------------------------+
//|                                                   MA_Channel.mq4 |
//|                                                      Coders Guru |
//|                                         http://www.forex-tsd.com |
//+------------------------------------------------------------------+
#property copyright "Coders Guru"
#property link      "http://www.forex-tsd.com"

//---- input parameters
extern double    TakeProfit=80;
extern double    Lots=1;
extern double    TrailingStop=21;

extern int USMA = 10;
extern int LSMA = 8;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//---- 

   
   int cnt, ticket, total;
  
   if(Bars<100)
     {
      Print("bars less than 100");
      return(0);  
     }
   if(TakeProfit<10)
     {
      Print("TakeProfit less than 10");
      return(0);  // check TakeProfit
     }
     
     
     
   total  = OrdersTotal(); 
   
   if(total < 1) 
     {
       if( High[1] < iMA(NULL,0,LSMA,0,MODE_SMA,PRICE_LOW,1) && High[2] < iMA(NULL,0,LSMA,0,MODE_SMA,PRICE_LOW,2))
         {
            ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"My EA",12345,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(0);
         }
       if(Low[1] > iMA(NULL,0,USMA,0,MODE_SMA,PRICE_HIGH,1) && Low[2] > iMA(NULL,0,USMA,0,MODE_SMA,PRICE_HIGH,2) )
         {

            ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"My EA",12345,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()); 
            return(0);
         }
         return(0);
     }
   for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                     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 automatically opens orders when conditions are reached

It can change open orders parameters, due to possible stepping strategy

Other Features:

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:1.09 Total Net Profit:300.40

BackTest : EURUSD on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.17 Total Net Profit:-2363.60

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.08 Total Net Profit:-4756.00

BackTest : EURUSD on H1

From 2010-03-01 to 2010-03-27 Profit Factor:0.70 Total Net Profit:-678.70

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:343.84 Total Net Profit:2125.60

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:0.03 Total Net Profit:-8402.60

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:5.12 Total Net Profit:4323.50

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.21 Total Net Profit:-5741.00

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-04-16 Profit Factor:0.09 Total Net Profit:-9962.40

BackTest : USDCAD on H1

From 2009-01-01 to 2010-01-01 Profit Factor:0.18 Total Net Profit:-10004.16

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:4.90 Total Net Profit:2762.12

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:0.37 Total Net Profit:-2429.86

Request Backtest for MA_Channel


From : (yyyy/mm/dd) To: (yyyy/mm/dd)

Pair: Period: