Trending and Reversal





//+------------------------------------------------------------------+
//|                                        Trending and Reversal.mq4 |
//|                                   Copyright © 2008, Henky Mailis |
//|                                         http://www.h3nkymcnv.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Henky Mailis"
#property link      "http://www.h3nkymcnv.com"
//----
extern double Lots=1.0;
extern double Bands=100.0;
extern double TakeProfit=150.0;
extern double InitialStop=50.0;
extern double TrailingStop=50.0;
//----
int jmlorder=0;
int itung=0;
int  slip=0;
double slnyo=0.0;
double buka=0;
double stop=0;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//---- 
   jmlorder=0;
   for(itung=0;itung<OrdersTotal();itung++)
    {
     OrderSelect(itung,SELECT_BY_POS,MODE_TRADES);
     //----
     if(OrderSymbol()==Symbol())
     jmlorder++;
    }
//----
   if(jmlorder==0)
    {
     if(iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,0)<iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)) 
      {
       OrderSend(Symbol(),OP_SELL,Lots,Bid,slip,Ask+InitialStop*Point,Ask-TakeProfit*Point,NULL,0,0,Blue);
       return(0);
      }
     if(iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,0)>iMACD(NULL,0,14,26,9,PRICE_CLOSE,MODE_MAIN,1)) 
      { 
       OrderSend(Symbol(),OP_BUY,Lots,Ask,slip,Bid-InitialStop*Point,Bid+TakeProfit*Point,NULL,0,0,Red);
       return(0);
      }
    }
//----
   buka=0; stop=0;
   if(jmlorder==1)
    {
     for(itung=OrdersTotal();itung>=0;itung--)
      {
       OrderSelect(itung,SELECT_BY_POS,MODE_TRADES);
       if(OrderSymbol()==Symbol())
        {	
         if(OrderType()==OP_SELL)
          {
           buka=OrderStopLoss(); stop=OrderOpenPrice();
           OrderSend(Symbol(),OP_BUYSTOP,Lots,buka,slip,stop,buka+TakeProfit*Point,NULL,0,0,Orange);
           return(0);
          }
         if(OrderType()==OP_BUY)
          {
           buka=OrderStopLoss(); stop=OrderOpenPrice();
           OrderSend(Symbol(),OP_SELLSTOP,Lots,buka,slip,stop,buka-TakeProfit*Point,NULL,0,0,Indigo);
           return(0);
          }
        }
      } 
    }
//---- if we have opened positions we take care of them
   slnyo=0;
   for(itung=OrdersTotal();itung>=0;itung--)
    {
     OrderSelect(itung,SELECT_BY_POS,MODE_TRADES);
     if(OrderSymbol()==Symbol())
      {
       if(OrderType()==OP_SELL)
        {
         slnyo=OrderStopLoss();
         if(TrailingStop>0)
          if(OrderOpenPrice()-Ask>=TrailingStop*Point)
           if(OrderStopLoss()>(Ask+Point*TrailingStop))
            {
             OrderModify(OrderTicket(),OrderOpenPrice(),OrderClosePrice()+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point,0,Aqua);
             return(0);
            }
        }
       if(OrderType()==OP_BUY)
        {
         slnyo=OrderStopLoss();
         if(TrailingStop>0)
          if(Bid-OrderOpenPrice()>=TrailingStop*Point)
           if(OrderStopLoss()<Bid-Point*TrailingStop)
            {
             OrderModify(OrderTicket(),OrderOpenPrice(),OrderClosePrice()-Point*TrailingStop,OrderClosePrice()+TakeProfit*Point,0,DeepPink);
             return(0);
            }
        }
      }
    }
//----
   for(itung=OrdersTotal();itung>=0;itung--)
    {
     OrderSelect(itung,SELECT_BY_POS,MODE_TRADES);
     //----
     if(OrderSymbol()==Symbol())
      {
       if(OrderType()==OP_BUYSTOP)
        {
         if(OrderOpenPrice()!=slnyo)
          {
           OrderModify(OrderTicket(),slnyo,slnyo-Point*InitialStop,slnyo+TakeProfit*Point,0,Orange);
           return(0);
          }
        }
       if(OrderType()==OP_SELLSTOP)
        {
         if(OrderOpenPrice()!=slnyo)
          {
           OrderModify(OrderTicket(),slnyo,slnyo+Point*InitialStop,slnyo-TakeProfit*Point,0,Indigo);
           return(0);
          }
        }
      }
    } 
//----
   return(0);
  } 
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:

MACD Histogram


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.28 Total Net Profit:2838.70

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:2.60 Total Net Profit:675.00

BackTest : EURUSD on H1

From 2010-03-01 to 2010-03-27 Profit Factor:1.49 Total Net Profit:4899.40

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:1.97 Total Net Profit:4367.60

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:1.55 Total Net Profit:175.00

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:2.13 Total Net Profit:4028.20

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.61 Total Net Profit:-1319.90

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-04-16 Profit Factor:0.06 Total Net Profit:-9964.20

BackTest : USDCAD on H1

From 2009-01-01 to 2010-01-01 Profit Factor:0.93 Total Net Profit:-284.34

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.58 Total Net Profit:-3281.37

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:1.30 Total Net Profit:1442.20

Request Backtest for Trending and Reversal


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

Pair: Period: