FT_BollingerBands+RSI+SAR





//+------------------------------------------------------------------+
//|                                    FT_BollingerBands+RSI+SAR.mq4 |
//|                            FORTRADER.RU, Þðèé, ftyuriy@gmail.com |
//|   http://FORTRADER.RU, òîðãîâëÿ ïî áîëëåíäæåðó, ïàðàáîëèêó è RSI |
//+------------------------------------------------------------------+
/*Ðàçðàáîòàíî äëÿ 51 âûïóñêà æóðíàëà FORTRADER.Ru. 
Îò÷åòû: http://finfile.ru/index.php/files/get/ZpUthihnKs/test2100809.rar
Ñåò ôàéëû: http://finfile.ru/index.php/files/get/0BF1iPGVQJ/eurusd4h.set
Îáñóæäåíèå: http://fxnow.ru/group_discussion_view.php?group_id=49&grouptopic_id=409&grouppost_id=3439#post_3439
Àðõèâ æóðíàëà: http://www.fortrader.ru/arhiv.php
51 âûïóñê: http://www.fortrader.ru/
*/

#property copyright "FORTRADER.RU, Þðèé, ftyuriy@gmail.com"
#property link      "http://FORTRADER.RU, òîðãîâëÿ ïî áîëëåíäæåðó, ïàðàáîëèêó è RSI"

double upfractal;
double dwfractal;

int bars;
int start()
  {
  if(Bars!=bars)
  {bars=Bars;
  Pattern();
  SarTrailingStop();
  }
   return(0);
  }

extern int rsiperiod=8;
extern int bbperiod=14;
extern int bbotcl=1;
extern int SL=50;
extern int TP=135;
int err;

extern int MG=564651;
extern double Lots=0.1;

extern int mn=10;
extern int otstup=105;
extern int rsiup=30;
extern int rsidw=70;

int okbuy,oksell;
 int Pattern()
 {
   double op,sl,tp;
   double rsi[101]; 
   double irsi;  
   double fractal;
   ArraySetAsSeries(rsi,true);
   for(int i=100; i>=0; i--)  
   {
   rsi[i]=iRSI(NULL,0,rsiperiod,PRICE_CLOSE,i);
   if(i==1){irsi=rsi[i];}
   }
   
   double bbup=iBandsOnArray(rsi,0,bbperiod,bbotcl,0,MODE_UPPER,1);
   double bblow=iBandsOnArray(rsi,0,bbperiod,bbotcl,0,MODE_LOWER,1); 
   
   fractal=iFractals(NULL, 0, MODE_UPPER, 3);
   if(fractal!=0)  upfractal=iFractals(NULL, 0, MODE_UPPER, 3); 
   fractal=iFractals(NULL, 0, MODE_LOWER, 3);
   if(fractal!=0)  dwfractal=iFractals(NULL, 0, MODE_LOWER, 3); 
   
   if(irsi>bbup && Close[1]<upfractal && okbuy==0) {
   op=upfractal+otstup*Point*mn;if(SL>0){sl=op-SL*Point*mn;}if(TP>0){tp=op+TP*Point*mn;}
   err=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FT_BollingerBands",MG,0,Red);
   if(err<0){Print("OrderSend()-  Îøèáêà OP_BUYSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   okbuy=1;
   }
   
   if(irsi<rsiup){
   _DeleteOrder(1);
   okbuy=0;
   }
   
   /*Ïðîäàæè*/
   
   if(irsi<bblow && Close[1]>dwfractal && oksell==0 ) {
   op=dwfractal-otstup*Point*mn;if(SL>0){sl=op+SL*Point*mn;}if(TP>0){tp=op-TP*Point*mn;}
   err=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"FT_BollingerBands",MG,0,Red);
   if(err<0){Print("OrderSend()-  Îøèáêà OP_SELL.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   oksell=1;
   }
   
   if(irsi>rsidw){
   _DeleteOrder(0);
   oksell=0;
   }
   
 //  Print("bbup "+bbup+" dwfractal "+dwfractal+" upfractal "+upfractal);
  
 
 return(0);
 }

//óäàëÿåò îòëîæåííûå ñòîï îðäåðà
int _DeleteOrder(int type)
{
   for( int i=1; i<=OrdersTotal(); i++)          
   {
    if(OrderSelect(i-1,SELECT_BY_POS)==true) 
    {                                       
     if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MG)
     {
      OrderDelete(OrderTicket()); 
     }//if
  
    if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MG)
     {
      OrderDelete(OrderTicket()); 
     }//if
    }//if
   }
   return(0);
}

//Òðåéäèíã ñòîï ïî ïàðàáîëèêó
extern double SARstep=0.003;
extern double SARmax=0.2;
extern int SarTrailingStop=1;
extern int TrailingStep=5;

int  SarTrailingStop()
{int i;bool err;

double sar=iSAR(NULL,0,SARstep,SARmax,1);

   for( i=1; i<=OrdersTotal(); i++)        
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true)
       {  
        if(SarTrailingStop>0 && OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber()==MG)  
        {                
         if(sar>OrderStopLoss())
          {
           if((sar-OrderStopLoss())>=TrailingStep*Point*mn && (Ask-sar)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
           {
            Print("ÒÐÅÉËÈÌ");
            err=OrderModify(OrderTicket(),OrderOpenPrice(),sar,OrderTakeProfit(),0,Green);
            if(err==false){return(-1);}
           }//if(Bid>=OrderStopLoss()
          }//if(Bid-OrderOpenPrice()
         }//if(BBUSize>0
        }//if(OrderSelect(i
           
       if(OrderSelect(i-1,SELECT_BY_POS)==true)
       {
        if(SarTrailingStop>0 && OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MG)  
        {        
         if(OrderStopLoss()>sar)
          {
           if((OrderStopLoss()-sar)>TrailingStep*Point*mn && (sar-Ask)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
           {
            Print("ÒÐÅÉËÈÌ");
            err=OrderModify(OrderTicket(),OrderOpenPrice(),sar,OrderTakeProfit(),0,Green);
            if(err==false){return(-1);}
           }//if(Ask<=OrderStopLoss()
          }//if(OrderOpenPrice()
         }//if(BBUSize>0 
       }// if(OrderSelect
    }// for( i=1;
return(0);
}





Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar


Indicator Curves created:


Indicators Used:

Relative strength index
Fractals
Parabolic Stop and Reverse system


Custom Indicators Used:

Order Management characteristics:
It automatically opens orders when conditions are reached
Checks for the total of open orders

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:0.07 Total Net Profit:-310.71

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:0.98 Total Net Profit:-3.98

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:1.80 Total Net Profit:239.04

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.00 Total Net Profit:-189.30

BackTest : USDCHF on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.91 Total Net Profit:-12.40

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:2.81 Total Net Profit:100.47

Request Backtest for FT_BollingerBands+RSI+SAR


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

Pair: Period: