Author: Copyright � 2007, lcs
Price Data Components
Series array that contains open prices of each bar
Orders Execution
It automatically opens orders when conditions are reachedChecks for the total of open ordersIt Closes Orders by itself
Indicators Used
Indicator of the average true range
0 Views
0 Downloads
0 Favorites
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);

}

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---