Forex_Runner






extern int     Delta = 30;
extern int     SL    = 20;
extern int     TP    = 40;

double         LHFU, LLFD;        // LastHighFractalUp, LastLowFractalDown
double         SS_OpnPrx, BS_OpnPrx;
int            JT_SL,                                 // Jumlah Trades Sell Limit
               JT_BL,                                 // Jumlah Trades Buy Limit
               JT_SS,                                 // Jumlah Trades Sell Stop
               JT_BS,                                 // Jumlah Trades Buy Stop
               JT_OS,                                 // Jumlah Trades Open Sell
               JT_OB;                                 // Jumlah Trades Open Buy
               
int start()
{
   ChkAllTrd();
   if (JT_OS<=0 && JT_OB<=0)                          // tdk ada open posisi
   {
      FindLastFractal();
      if (LHFU>0)                                     // ada fractal up
      {
         if (JT_BS>0)                        HapusBuyStop();
         Print ("LHFU...: "+LHFU);
         Print ("SS Open: "+ChkOrderOpnPrx("SS"));
         if (ChkOrderOpnPrx("SS")>0 && ChkOrderOpnPrx("SS")!=LHFU-(Delta*Point))     HapusSellStop();
         if (JT_SS<=0)
         {
            SS_OpnPrx   =  LHFU-(Delta*Point);
            OrderSend(Symbol(),OP_SELLSTOP,1,SS_OpnPrx,0,SS_OpnPrx+(SL*Point),SS_OpnPrx-(TP*Point),"Sell",0,0,Red);
         }
      }
   
      if (LLFD>0)                                     // ada fractal dn
      {
         if (JT_SS>0)                        HapusSellStop();
         Print ("LLFD...: "+LLFD);
         Print ("BS Open: "+ChkOrderOpnPrx("BS"));
         if (ChkOrderOpnPrx("BS")>0 && ChkOrderOpnPrx("BS")!=LLFD+(Delta*Point))     HapusBuyStop();
         if (JT_BS<=0)
         {
            BS_OpnPrx   =  LLFD+(Delta*Point);
            OrderSend(Symbol(),OP_BUYSTOP,1,BS_OpnPrx,0,BS_OpnPrx-(SL*Point),BS_OpnPrx+(TP*Point),"Buy",0,0,Blue);
         }
      }
   }
   return(0);
}

void FindLastFractal()
{
   double   val1;
   double   val2;
   int      i;
   i     = Bars;
   LHFU  = 0;
   LLFD  = 0;
   while(i>=0)
   {
      val1 = iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0)  LHFU  =  High[i];
  
      val2 = iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0)  LLFD  =  Low[i];
      
      if (LHFU>0 || LLFD>0)   break;
      else                    i--;
   } 
}

void ChkAllTrd()
{
   int ecnt, total;
   JT_SL=0;
   JT_BL=0;
   JT_SS=0;
   JT_BS=0;
   JT_OS=0;
   JT_OB=0;
   total=OrdersTotal();
   for (ecnt=0;ecnt<total;ecnt++)
   {
      OrderSelect(ecnt,SELECT_BY_POS, MODE_TRADES);
      if       (OrderType()==OP_SELLLIMIT && OrderSymbol()==Symbol())
         JT_SL++;
      else if  (OrderType()==OP_BUYLIMIT  && OrderSymbol()==Symbol())
         JT_BL++;         
      else if  (OrderType()==OP_SELLSTOP  && OrderSymbol()==Symbol())
         JT_SS++;
      else if  (OrderType()==OP_BUYSTOP   && OrderSymbol()==Symbol())
         JT_BS++;         
      else if  (OrderType()==OP_SELL      && OrderSymbol()==Symbol())
         JT_OS++;
      else if  (OrderType()==OP_BUY       && OrderSymbol()==Symbol())
         JT_OB++;         
   }
}

void HapusSellStop()
{
   int total=OrdersTotal();
   int ecnt;
   for (ecnt=0;ecnt<total;ecnt++)
   {
      OrderSelect(ecnt,SELECT_BY_POS, MODE_TRADES);
      if  (OrderType()==OP_SELLSTOP  && OrderSymbol()==Symbol())  OrderDelete(OrderTicket());
   }
}

void HapusBuyStop()
{
   int total=OrdersTotal();
   int ecnt;
   for (ecnt=0;ecnt<total;ecnt++)
   {
      OrderSelect(ecnt,SELECT_BY_POS, MODE_TRADES);
      if  (OrderType()==OP_BUYSTOP   && OrderSymbol()==Symbol())  
      {
         OrderDelete(OrderTicket());
      }
   }
}

double ChkOrderOpnPrx(string Tipe)
{
   int ecnt;
   for (ecnt=0;ecnt<OrdersTotal();ecnt++)
   {
      OrderSelect(ecnt,SELECT_BY_POS, MODE_TRADES);
      if (Tipe=="SS" && OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol())   return(OrderOpenPrice());
      if (Tipe=="BS" && OrderType()==OP_BUYSTOP  && OrderSymbol()==Symbol())   return(OrderOpenPrice());
   }
}





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:

Fractals


Custom Indicators Used:

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


Other Features:

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:1.36 Total Net Profit:340.00

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:1.70 Total Net Profit:380.00

BackTest : EURUSD on H1

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

BackTest : EURUSD on H1

From 2010-04-01 to 2010-04-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.00 Total Net Profit:0.00

BackTest : GBPUSD on H1

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

BackTest : USDCAD on H1

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

BackTest : USDCAD on H1

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

BackTest : USDCHF on H1

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

BackTest : USDJPY on H1

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

Request Backtest for Forex_Runner


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

Pair: Period: