FrBestExp02_5_maloma_mod





/*-----------------------------+
|			       |
| Shared by www.Aptrafx.com    |
|			       |
+------------------------------*/

//+------------------------------------------------------------------+
//|                                               FrBestExp02_05.mq4 |
//|                                                                  |
//|                                                     _5 íàêëîí ÌÀ |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
extern double  Lots = 1.00;
extern int     Stop_Loss = 1000;
extern int     Take_Profit = 1000;
extern int     Trailing_Stop = 0;

extern int map=25;
extern int mash=1;

//    Only for M15
extern int Vlim=50;
extern int fper=12,sper=26,sigper=9;// ïåðèîäû èíäèêàòîðà OsMA
extern int stop=300;// Óðîâåíü îòñå÷êè ïðîôèòà
extern int  hedg=1;// ôëàã ðàçðåøåíèÿ õåäæà
extern double  kh=10;// êîýôô.õåäæèðîâàíèÿ
extern int lok;// ôëàã ðàçðåøåíèÿ ëîêèðîâàíèÿ ïîçèöèè
extern int rpr=1;// ôëàã îïðåäåëåíèÿ ïðîñàäêè ïîçû èëè ïî âñåìó òåñòó
extern int ttime=900;// Çàäåðæêà âûñòàâëåíèÿ õåäæ-îðäåðà íà 1 ñâå÷ó
extern int hstop=-3000;// ñòîï-ëîññ äëÿ õåäæà


int cnt;// èíäåêñ öèêëà
int sigs,sigb;// ñóììèðóþùèé ñèãíàë íà ïðîâåäåíèå îïåðàöèè êóïëè-ïðîäàæè

double ssig,bsig;// ñèãíàëû íà êóïëþ-ïðîäàæó îò èíäèêàòîðà ôðàêòàëîâ
double  osmanul,osmaone;// ñèãíàëû èíäèêàòîðà OsMA îò íóëåâîãî è ïåðâîãî áàðîâ
int s,b;// êîëè÷åñòâî àêòèâíûõ ñýëë è áàé îðäåðîâ
int hml;// ôëàã çàêðûòèÿ ïîçèöèè ñ ìèíóñîâûì ïðîôèòîì (çàêðûâàåòñÿ ïîçèöèÿ ñ ìåíüøèì ëîòîì
int pl;// ôëàã çàêðûòèÿ âñåõ ïîçèöèé ïî óñëîâèþ íàëè÷èÿ óñòàíîâëåííîãî ïîëîæèòåëüíîãî ïðîôèòà
double summa;// ñóììàðíûé ïðîôèò ïî âñåì ïîçèöèÿì
double mlot;// âåëè÷èíà òîðãóåìîãî ëîòà
double ssum,bsum;// ïðîôèò ïî îðäåðàì ñýëë è áàé ðàçäåëüíî
double pr;// âåëè÷èíãà ïðîñàäêè
int hblok,shblok,bhblok;// ôëàã áëîêèðîâàíèÿ âûñòàâëåíèÿ õåäæ-îðäåðà è ôëàãè ïîâòîðíîãî çàïóñêà õåäæ-ïðîöåäóðû
double DHMax,DLMin;
bool ft=true;
int rang;
double pt;
int nul;// ïåðåìåííûå äëÿ âû÷èñëåíèÿ ïîâîðîòíîé òî÷êè ïðè çàïóñêå è â 00.00 êàæäûõ ñóòîê
int LastTradeTime;
//---------------------------------------------------------------------------------------------------------------

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
double FractalBest(int Dir)
 {
  double up,dw;
  
   if(High[3]>High[4] && High[3]>High[5] && High[3]>High[2] && High[3]>High[1]){ 
      up=Low[0]-3*Point;
   }
   else{
      up=0;
   }
   if(Low[3]<Low[4] && Low[3]<Low[5] && Low[3]<Low[2] && Low[3]<Low[1]){ 
      dw=High[0]+3*Point;
   }
   else{
      dw=0;
   }
 if (Dir==0) {return(up);}
 if (Dir==1) {return(dw);}
 }

int start(){

   mlot=Lots; // îïðåäåëåíèå âåëè÷èíû ðàáî÷åãî ëîòà
//--------------------------------------------Âû÷èñëåíèÿïîâîðîòíîé òî÷êè------------------------------------------
   if ((Hour()==0 && Minute()==0) || ft){//íà÷àëèñü ñóòêè èëè ïåðâûé çàïóñê
      DHMax=0;
      DLMin=1000;
         if(ft){// ïåðâûé çàïóñê 
            rang=MathRound((Hour()*60+Minute())/Period());
            nul=rang;
         }
         else{
            nul=96;//çà ñóòêè íà 15
            rang=1;
         }
         for(cnt=rang;cnt<=rang+95;cnt++){//ïîèñê ìàêñ è ìèí çà ïîñëåäíèå ñóòêè
            if(DHMax<High[cnt])DHMax=High[cnt];
            if(DLMin>Low[cnt])DLMin=Low[cnt];
         }
      pt=(DHMax+DLMin+Close[nul])/3;//ïîâîðîòíàÿ òî÷êà
      ft=false;
   }
//----------------------------------------------------------------------------------------------------------------
   if(CurTime()-LastTradeTime<20)return(0);
//----------------------------Îïðåäåëåíèÿ îáùåãî è ïîçèöèîííîãî ïðîôèòà, à òàêæåïîäñ÷¸ò ïîçèöèé-------------------
   s=0;b=0;summa=0;bsum=0;ssum=0;
      for(cnt=0;cnt<OrdersTotal();cnt++){
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
            if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){
               ssum=ssum+OrderProfit();
               s=s+1;
            }
            if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){ 
               bsum=bsum+OrderProfit();
               b=b+1;
            }
      }
   summa=bsum+ssum;summa=MathRound(summa);
//------------------------------------------------------Òðåéëèíã-Ñòîï---------------------------------------------
   if(Trailing_Stop>0 && hedg==1){ 
      for(cnt=0;cnt<OrdersTotal();cnt++){
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
            if(OrderSymbol()==Symbol() && OrderProfit()>0){ 
               if(Bid-OrderOpenPrice()>Point*Trailing_Stop){ 
                  if(OrderStopLoss()<Bid-Point*Trailing_Stop){ 
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Trailing_Stop,OrderTakeProfit(),0,Red);
                     return(0);
                  }
               }
               if(OrderOpenPrice()-Ask>Point*Trailing_Stop){ 
                  if(OrderStopLoss()>Ask+Point*Trailing_Stop){ 
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*Trailing_Stop,OrderTakeProfit(),0,Red);
                     return(0);
                  }
               }
            }
      }
   }
//---------------------------------------------------Âûñòàâëåíèå õåäæ-îðäåðà--------------------------------------
   if(hblok==1){
      shblok=0;bhblok=0;
      for(cnt=0;cnt<OrdersTotal();cnt++){
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
            if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderLots()==mlot*kh)shblok=1;
            if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderLots()==mlot*kh)bhblok=1;
      }
   }
   if(shblok==1 && bhblok==1)hblok=1;
   if(shblok==0 && bhblok==0)hblok=0;
   //if s+b=0 then hblok=0;
   if((s+b<=2 && (lok==1 || lok==0)) && hedg==1 && hblok==0){
      if(CurTime()-LastTradeTime<ttime)return(0);
      if(ssum>=150 || bsum<-300){ 
         OrderSend(Symbol(),OP_SELL,kh*mlot,Bid,5,Bid+Stop_Loss*Point,Bid-Take_Profit*Point,NULL,0,0,Aqua);
         //SetArrow(Time[0],H+5*Point,159,Aqua);
         hblok=1;
         return(0);
      }
      if(bsum>=150 || ssum<-300){
         OrderSend(Symbol(),OP_BUY,kh*mlot,Ask,5,Ask-Stop_Loss*Point,Ask+Take_Profit*Point,NULL,0,0,Red);
         //SetArrow(Time[0],L-5*Point,159,Red);
         hblok=1;
         return(0);
      }
   }
//------------------------------------------Âû÷èñëåíèå ïðîñàäêè â ïðîöåññå òîðãîâ------------------------------
   if(s+b==0 && rpr==0)pr=0;
   if(pr>summa && summa<0)pr=MathRound(summa);
//-----------------------------------Îïðåäåëåíèå îñíîâíîãî ñèãíàëà è ñèãíàëîâ èíäèêàòîðîâ------------------------

//   bsig=iCustom(NULL,0,"FractalBest",0,0);
//   ssig=iCustom(NULL,0,"FractalBest",1,0);
   bsig=FractalBest(0);
   ssig=FractalBest(1);
   osmanul=iOsMA(NULL,0,fper,sper,sigper,PRICE_CLOSE,0);
   osmaone=iOsMA(NULL,0,fper,sper,sigper,PRICE_CLOSE,1);

   double ma1=iMA(NULL,60,map,0,0,0,0);
   double ma2=iMA(NULL,60,map,0,0,0,mash);
   
   if(ssig>1 && ma1>ma2 && Volume[1]>Vlim &&  Volume[1]>Volume[2] && osmaone>osmanul && osmaone<=0 && osmanul<0 && Close[0]>pt){
      sigs=1;
   }
   else{
      sigs=0;
   }
   if(bsig>1 && ma1<ma2 && Volume[1]>Vlim &&  Volume[1]>Volume[2] && osmaone<osmanul && osmaone>=0 && osmanul>0 && Close[0]<pt){
      sigb=1;
   }
   else{
      sigb=0;
   }
   /*
//--------------------------------------------Âûâîä äàìïà ðàáîòû ýêñïåðòà â æóðíàë---------------------------------
Print("Data: ",Year(),".",Month(),".",Day(),"  Time ",Hour(),":",Minute(),"   1Tik=",Volume[2],"  0Tiks=",Volume[1],"  PT=",pt,
      "  Price=",Close[0],"  BSig=",MathRound(bsig),"  SSig=",MathRound(ssig),"  SSum=",MathRound(ssum),"  BSum=",MathRound(bsum),
      "  Prosadka=",pr,"  HBlok=",hblok);
//---------------------------------Îïðåäåëåíå ìîäåëè çàêðûòèÿ îðäåðîâ ïî ïðîôèòó-----------------------------------
*/
   if(s+b<=1){
      hml=0;pl=0;
   }
   if(summa>=stop*mlot && s+b==1 && Trailing_Stop==0)pl=1;
   if(summa>2*stop && s+b==2 && lok==0 && Trailing_Stop==0)pl=1;
   if(summa>=3*stop*mlot && s+b==3 && lok==1 && Trailing_Stop==0)pl=1;
   if(Trailing_Stop>0)pl=0;
   if(Trailing_Stop>0 && (ssum<hstop || bsum<hstop))pl=1; // ñòîï äëÿ íåóäà÷íîãî õåäæà
   if(Trailing_Stop>0 && ((ssum<-300 && bsum>300) || (ssum>300 && bsum<-300)) && s+b>=2 && hedg==1 && pl==0)hml=1; 
// Óäàëåíèå ìåëêîé ïîçèöèè ñ îòðèöàòåëüíûì ïðîôèòîâ ïîñëå óäà÷íîãî çàïóñêà õåäæà
//------------------------------Óäàëåíèå õåäæèðóåìîãî îðäåðà ïðè ïîëó÷åíèè çàäàííîãî ïðîôèòà-----------------------
   if(hml==1){ 
      for(cnt=OrdersTotal()-1;cnt>=0;cnt--){
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); 
            if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && ssum<-2*stop && NormalizeDouble(OrderLots(),1)==NormalizeDouble(1.0*mlot,1)){                                    
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
               //return(0);
            } 
            if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && bsum<-2*stop && NormalizeDouble(OrderLots(),1)==NormalizeDouble(1.0*mlot,1)){ 
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
               //return(0);
            }
      }
      return(0);
   }
//---------------------------Çàêðûòèå âñåõ îòêðûòûõ íà ïàðå îðäåðîâ ïðè äîñòèæåíèè çàäàííîãî ïðîôèòà
   if(pl==1){ 
      for(cnt=OrdersTotal()-1;cnt>=0;cnt--){
         OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); 
            if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){                                    
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
               //return(0);
            }
            if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
               //return(0);
            }
      }
      return(0);
   }

//------------------------------------------Âûñòàâëåíèå îñíîâíûõ è ëîêèðóþùèõ îðäåðîâ------------------------------
   if(s+b<=1){ 
      if((sigs==1 && s+b==0) || (bsum<-150 && lok==1)){ 
         OrderSend(Symbol(),OP_SELL,mlot,Bid,5,Bid+Stop_Loss*Point,Bid-Take_Profit*Point,NULL,0,0,Lime);
         //SetArrow(Time[0],H+5*Point,242,Lime);
         return(0);
      }
      if((sigb==1 && s+b==0) || (ssum<-150 && lok==1)){
         OrderSend(Symbol(),OP_BUY,mlot,Ask,5,Ask-Stop_Loss*Point,Ask+Take_Profit*Point,NULL,0,0,Gold);
         //SetArrow(Time[0],L-5*Point,241,Gold);
         return(0);
      }
   }
/*  */ 
//----------------------------------------------------------The END-------------------------------------------------
   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
Series array that contains close prices for each bar
Series array that contains tick volumes of each bar


Indicator Curves created:


Indicators Used:

Moving Average of Oscillator
Moving average indicator


Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders

It can change open orders parameters, due to possible stepping strategy
It automatically opens orders when conditions are reached
It Closes Orders by itself

Other Features:

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:0.56 Total Net Profit:-9986.50

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:20.82 Total Net Profit:9077.00

BackTest : EURUSD on H1

From 2010-03-01 to 2010-03-27 Profit Factor:0.43 Total Net Profit:-9684.50

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-30 Profit Factor:0.37 Total Net Profit:-7470.80

BackTest : EURUSD on H1

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

BackTest : EURUSD on H1

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

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.91 Total Net Profit:-2149.40

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-04-16 Profit Factor:0.00 Total Net Profit:-9966.00

BackTest : USDCAD on H1

From 2009-01-01 to 2010-01-01 Profit Factor:0.49 Total Net Profit:-9999.59

BackTest : USDCAD on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.28 Total Net Profit:-10193.32

BackTest : USDCHF on H1

From 2009-12-01 to 2010-01-01 Profit Factor:0.49 Total Net Profit:-9581.25

BackTest : USDJPY on H1

From 2009-11-01 to 2009-11-30 Profit Factor:3.16 Total Net Profit:3687.63

Request Backtest for FrBestExp02_5_maloma_mod


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

Pair: Period: