Limit





#property copyright "Copyright © 2007, lcs"

extern double  Lots=1; double   LotOrder;
extern int       WIB=7; //WIB reuters   =7 GMT interbank
extern int  JamMulaiWIB = 0;          // 1.jam mulai bikin garis: ENTRYPOINT [pukul]
extern int  JamAkhirWIB = 11;//:0";         // 5.panjang [jam
extern int jarak=15,target=20,stop=65;
datetime kadaluarsa;

int CaraEntry0_8=0;// Limit2arah=0,EntryLB=1,EntryLS=2,EntryLimitSAR0=3;//,EntryDQ1=false,EntryDQ2=false,EntryDQ01=false,EntryDQ012=false;
extern int PaksaEXIT0_25=25;
int CancelLimitJikaDone01=0;
int hariYgTdkMasuk=6;
int hariMasuk=7;//7 semua hari
string nama15;
double ATR15,openJam0;
bool showATR=true,sudahPasangLimit=false;

int init()
{
   ObjectsDeleteAll();
   JamMulaiWIB=convertFromWIBLimit(JamMulaiWIB,WIB);
   JamAkhirWIB=convertFromWIBLimit(JamAkhirWIB,WIB);
//   initVisual(WIB);
   nama15=BuatText(nama15);
   return(0);
}

void start()
{
//   startVisual(JamMulaiWIB,JamAkhirWIB);
   PaksaExit(PaksaEXIT0_25);
   if (showATR) ShowATR();
   if ((TimeDayOfWeek(TimeCurrent())!=hariYgTdkMasuk || hariYgTdkMasuk>6)&&( hariMasuk>6 || TimeDayOfWeek(TimeCurrent())==hariMasuk))
         EntryLimit(JamMulaiWIB,jarak,target,stop,"LBS");//ok
   return(0);
}

void EntryLimit(int jam,int delta,int TP,int SL, string arah)// 
{   int i;
   datetime besok;
   double posisi,TPbaru,SLbaru;
   LotOrder=Lots;      
   
   if ( TimeHour(TimeCurrent())==jam  && sudahPasangLimit==false )
   {
      openJam0=iOpen(NULL,60,0);
      kadaluarsa=StrToTime(StringConcatenate(TimeYear(TimeCurrent()),".",TimeMonth(TimeCurrent()),".",TimeDay(TimeCurrent())," ",JamAkhirWIB,":0") );
      if(jam>JamAkhirWIB)
      {
         besok=TimeCurrent()+86400;
         kadaluarsa=StrToTime(StringConcatenate(TimeYear(besok),".",TimeMonth(besok),".",TimeDay(besok)," ",JamAkhirWIB,":0") );
      }
   }
   if ( TimeCurrent()<=kadaluarsa  && sudahPasangLimit==false && ChkJmlTrd(OP_BUYLIMIT)==0 && ChkJmlTrd(OP_SELLLIMIT)==0)
   {
      
      if  ((arah=="naik" || arah=="LBS")) OrderSend(Symbol(),OP_BUYLIMIT,LotOrder,openJam0-delta*Point,0,openJam0-(delta+SL)*Point,openJam0+(TP-delta)*Point,"LB ",0,kadaluarsa,Blue);
      if ((arah=="turun" || arah=="LBS")) OrderSend(Symbol(),OP_SELLLIMIT,LotOrder,openJam0+delta*Point,0,openJam0+(SL+delta)*Point,openJam0+(delta-TP)*Point,"LS ",0,kadaluarsa,Red);
      sudahPasangLimit=true;
   }
   Loop(delta,TP,SL,arah);
   if (TimeCurrent()>kadaluarsa) sudahPasangLimit=false;
}

void Loop(int delta,int TP,int SL, string arah)
{   
   int i;
   datetime besok;
   double posisi,TPbaru,SLbaru;
   if ( TimeCurrent()<kadaluarsa && ChkJmlTrd(OP_BUY)==1  && ChkTrdComment("LS Loop")==0)
      {
         DeleteLimit("LS ");
         for (i=0; i<OrdersTotal(); i++)
         {
            OrderSelect(i,SELECT_BY_POS, MODE_TRADES);
            if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
            {
               posisi=OrderOpenPrice();
            }
         }
         OrderSend(Symbol(),OP_SELLLIMIT,LotOrder,posisi+TP*Point,0,posisi+(SL+TP)*Point,posisi,"LS Loop",0,kadaluarsa,Red);
      }
      if ( TimeCurrent()< kadaluarsa && ChkJmlTrd(OP_SELL)==1 && ChkTrdComment("LB Loop")==0)
      {
         DeleteLimit("LB ");
         for (i=0; i<OrdersTotal(); i++)
         {
            OrderSelect(i,SELECT_BY_POS, MODE_TRADES);
            if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
            {
               posisi=OrderOpenPrice();
            }
         }
         OrderSend(Symbol(),OP_BUYLIMIT,LotOrder,posisi-TP*Point,0,posisi-(SL+TP)*Point,posisi,"LB Loop",0,kadaluarsa,Blue);
      }
}


int ChkTrdComment(string mode)//, int MagicEA)
{
   int i, JmlTrd;
   for (i=0; i<OrdersTotal(); i++)
   {
      OrderSelect(i,SELECT_BY_POS, MODE_TRADES);
      if(OrderComment()==mode && OrderSymbol()==Symbol())// && OrderMagicNumber()==MagicEA)
      {
         JmlTrd++;
      }
   }
   return(JmlTrd);
}

int ChkJmlTrd(int mode)//, int MagicEA)
{
   int i, JmlTrd;
   for (i=0; i<OrdersTotal(); i++)
   {
      OrderSelect(i,SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==mode && OrderSymbol()==Symbol())// && OrderMagicNumber()==MagicEA)
      {
         JmlTrd++;
      }
   }
   return(JmlTrd);
}

void DeleteLimit(string komentar)
{
   int i;
   for(i = OrdersTotal(); i >= 0; i--)
   {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderComment()==komentar && (OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT) && OrderSymbol()==Symbol())  
      {
         OrderDelete(OrderTicket());
      }
   }
}


int convertFromWIBLimit(int jam,int wib)
{
   int temp;
   temp= jam -wib;
   if (temp<0) return(24+temp);
   if (temp>24) return (temp-24);
   return(temp);
}

int convertToWIBLimit(int jam,int wib)
{
   int temp;
   temp= jam +wib;
   if (temp<0) return(24+temp);
   if (temp>24) return (temp-24);
   return(temp);
}


void PaksaExit(int keluar)
{
   int i;
   if (keluar <24 && TimeHour(TimeCurrent())==keluar )
   {
      for(i = OrdersTotal(); i >= 0; i--)
      {
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if(OrderType()==OP_BUY && OrderSymbol()==Symbol())  OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(),0,Blue); 
         if(OrderType()==OP_SELL && OrderSymbol()==Symbol())  OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(),0,Red); 
      }
   }
}

void ShowATR()
{  
   ATR15=10000*iATR(NULL,15,30,1);
   if (ATR15<=15) ObjectSetText(nama15,openJam0+"pk: "+DoubleToStr(convertToWIBLimit(TimeHour(TimeCurrent()),WIB),0)+":"+TimeMinute(TimeCurrent())+" ATR:"+DoubleToStr(ATR15,0), 18, "Arial", Yellow);
   if (ATR15>15) ObjectSetText(nama15,openJam0+"pk: "+DoubleToStr(convertToWIBLimit(TimeHour(TimeCurrent()),WIB),0)+":"+TimeMinute(TimeCurrent())+" ATR:"+DoubleToStr(ATR15,0), 18, "Arial", Red);
}

string BuatText(string nama)
{
   nama=nama+TimeCurrent();
   ObjectCreate( nama, OBJ_LABEL, 0, 0, 0 );
   ObjectSet( nama, OBJPROP_CORNER, 0 );
   ObjectSet( nama, OBJPROP_XDISTANCE, 1 );
   ObjectSet( nama, OBJPROP_YDISTANCE, 1 );
   ObjectSet( nama, OBJPROP_BACK, true );
   return (nama);

}



Sample





Analysis



Market Information Used:

Series array that contains open prices of each bar


Indicator Curves created:


Indicators Used:

Indicator of the average true range


Custom Indicators Used:

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

It Closes Orders by itself

Other Features:

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:0.33 Total Net Profit:-6536.90

BackTest : EURUSD on H1

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

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.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 : USDJPY on H1

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

Request Backtest for Limit


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

Pair: Period: