#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: