FT_HighLow+SAR





//+------------------------------------------------------------------+
//| FT_HighLow+SAR.mq4.mq4
//| FORTRADER.RU, Þðèé, ftyuriy@gmail.com
//| http://FORTRADER.RU, Ñîâåòíèê ïî ïðîáîþ HighLow è òðåéëèíã ïî SAR
//+------------------------------------------------------------------+
#property copyright "FORTRADER.RU, Þðèé, ftyuriy@gmail.com"
#property link      "http://FORTRADER.RU, Ñîâåòíèê ïî ïðîáîþ HighLow è òðåéëèíã ïî SAR"
/*    
Àðõèâ æóðíàëà: http://www.fortrader.ru/arhiv.php
51 âûïóñê: http://www.fortrader.ru/
*/

int SL=100;
extern int TP=0;
int err;

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

extern int mn=10;
int start()
  {
  SarTrailingStop();
  pattern();

   return(0);
  }

int pattern()
{
 double op,sl,tp;

double high=iHigh(Symbol(),Period(),1);
double stopbuy=iLow(Symbol(),Period(),2);

double low=iLow(Symbol(),Period(),1);
double stopsell=iHigh(Symbol(),Period(),2);


   if(ChPos(1)==0 ){
      _DeleteOrder(1);
      op=high;if(SL>0){sl=stopbuy;}if(TP>0){tp=op+(op-stopbuy)*3;}else{tp=0;}
      err=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"6 FORTRADER.RU",MG,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_BUYSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }
   
   if(ChPos(0)==0 ){
      _DeleteOrder(0);
      op=low;if(SL>0){sl=stopsell;}if(TP>0){tp=op-(stopbuy-op)*3;}else{tp=0;}
      err=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"4 FORTRADER.RU",MG,0,Red);
      if(err<0){Print("OrderSend()-  Îøèáêà OP_SELLSTOP.  op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);}
   }

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)
     {
      OrderDelete(OrderTicket()); 
     }//if
  
    if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1)
     {
      OrderDelete(OrderTicket()); 
     }//if
    }//if
   }
   return(0);
}

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

int  SarTrailingStop()
{int i;bool err; int GraStop=Period();

   

double sar=iSAR(NULL,GraStop,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())  
        {                
         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() )  
        {        
         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);
}


 //ïðîâåðÿåò åñòü ëè îòêðûòûå îðäåðà
int ChPos(int type) 
{//ïîäðîáíîå îïèñàíèå: http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=100

   int i;int col;
   for( i=1; i<=OrdersTotal(); i++)         
   {
      if(OrderSelect(i-1,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && type==1&& OrderMagicNumber()==MG){col=1;}
           if(OrderType()==OP_SELL && OrderSymbol()==Symbol() && type==0&& OrderMagicNumber()==MG){col=1;}
       }
    }   
return(col);
}



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:

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.82 Total Net Profit:-623.28

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:1.03 Total Net Profit:90.52

BackTest : EURUSD on H1

From 2010-03-01 to 2010-03-27 Profit Factor:0.93 Total Net Profit:-110.66

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.95 Total Net Profit:-94.52

BackTest : EURUSD on H1

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

BackTest : EURUSD on H1

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

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.93 Total Net Profit:-245.87

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-04-16 Profit Factor:0.18 Total Net Profit:-9995.43

BackTest : USDCAD on H1

From 2009-01-01 to 2010-01-01 Profit Factor:0.78 Total Net Profit:-4978.33

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.76 Total Net Profit:-320.11

BackTest : USDCHF on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.23 Total Net Profit:-1028.08

Request Backtest for FT_HighLow+SAR


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

Pair: Period: