//+------------------------------------------------------------------+ //| Your_Lucky_EURGBP_rdb_v1.mq4 | //| rahman_DGBeta | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "rahman_DGBeta (_rdb_)" #property link "abdulrahman_maros@yahoo.com" //salam salut saya untuk semua mql coder... //EA ini berasal dari MyLuckyPro V.0.4p... seorang teman meminta saya untuk memperbaikinya... //menambahkan filter dan meng optimasi supaya menghasilkan profit yang lebih dengan drowdown yang relatif aman... //selain versi EURGBP ini masih banyak versi lain yang siap kami share kepada teman-teman semua... //mohon kiranya jika anda menggunakan script ini... jangan menghapus baris permintaan donasi... salam coder... semoga sukses... // TimeFrame extern string TimeFrameExp = "<<< Time Frame Settings >>>"; extern string TF_note = "1=M1 2=M5 3=M15 4=M30 5=1H 6=4H 7=D1 8=W1 9=MN 0=Chart"; extern int TimeFrame = 2; //--------ANTI SERAKAH-------- extern string Original_EA = "MyLuckyPro V.0.4p"; extern string LasEdit_by = "_rdb_ : 30 Nopember 2008"; extern string Balance_Info = "Bila sudah tercapai ROBOT berhenti, INGAT JANGAN serakah"; extern double TargetBalance = 3000000; extern string AutoStop_Info = "AutoStop=false, tidak buka posisi baru, posisi yg lama tetap di maintain"; extern bool AutoStop = false; //--------TradingTime-------- extern string Time_Info = "Jam Trading waktu Server"; extern string TradeTime_note = "IBFX:21-2(max4) Alpari:22-3(max5) Insta:23-3(max6)"; extern int OpenHour = 22; //19 extern int CloseHour = 3; //int CloseHour2 = 1; extern string MM_Info = "Kalau MM=true, isi risk berapa persen yg mau di pake."; extern bool MM = true; // pake MM extern int Risk = 10; // persentase MM extern string Lots_Info = "Kalau MM=false, isi Lots yg mau di pake."; extern double Lots = 1; // kalo 'MM=false' pake lot string MaxLots_Info = "Maximum dan Minimum Lot, nggak bisa lebih dari ini."; extern double MaxLots = 100; //extern double MinLots = 0.1; string LotsDigit_Info = "LotsDigit=0, maka akan ambil dari system"; //extern int LotsDigit = 1; extern int Slippage = 3; extern string Trade_Info = "TP=TakeProfit, disarankan sedikit saja"; extern int TP = 7; // jangan besar-besar extern string SL1_Info = "SL1=StopLoss bukan jam trading"; extern int SL1 = 22; //19 // SL kalau jam close extern string SL2_Info = "SL2=StopLoss jam trading"; extern int SL2 = 31; //31 // SL kalau jam trading extern int FractalRange = 32; extern int ATR_Level = 15; extern int PriceFromFractal = 7; extern string HiddenTP_Info = "Bila true, maka TP tidak di set"; extern bool HiddenTP = true; //---------------------------------------------------------------------------- extern string Filter_Info = "Filter untuk buka posisi"; extern int SignalFilter = 5; extern int MaxTrades = 5; extern int MaxTradePerBar = 2; //3 extern int MaxTradePerPosition = 3; extern int IMA_PERIOD = 11; extern int Magic = 11111; extern string email_YM = "abdulrahman_maros@yahoo.com"; extern string Need_Donation = "Abdul Rahman"; extern string Bank = "BCA : 7990026640"; extern string LibertyReserve = "U7067895"; //---------------------------------------------------------------------------- int TradePerBar = 0; //---------------------------------------------------------------------------- double Last_BUY_OpenPrice = 0; double Last_SELL_OpenPrice = 0; int BarCount = -1; extern bool Time_Opened_Protection = TRUE; int LimitTime_1 = 60; int pips_1 = 3; //3; int LimitTime_2 = 140; int pips_2 = 2; //2; int LimitTime_3 = 170; int pips_3 = 0; //0; int LimitTime_4 = 200; int pips_4 = 1; //1; int LimitTime_5 = 240; int pips_5 = 4; //4; double LastUpFractal,LastDownFractal,TimeOfLastDownFractal,TimeOfLastUpFractal; double LastUpFractal_H1,LastDownFractal_H1,TimeOfLastDownFractal_H1,TimeOfLastUpFractal_H1; int FractalEnvelope=0; int FractalEnvelope_H1=0; double midFractal=0; int CurrentATR=0; extern bool SpreadFilter = true; extern int SpreadLimit = 3; int TF_SELECT [] = { 0 , 1 , 5 , 15 , 30 , 60 , 240 , 1440 , 10080 , 43200 }; int DQ_ADJUST [] = { 0 , 1 , 10 , 100 , 1 , 10 , 100 }; int DQADJ,LotsDigits; int TF; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { if(1==2 || 3==4 && 5==6) return (0); if(7==8 || 9==10 && 11==12) return (0); TF = TF_SELECT [ TimeFrame ]; int DIGITS = MarketInfo(Symbol(),MODE_DIGITS); DQADJ = DQ_ADJUST [ DIGITS ]; LotsDigits = 2; if(MarketInfo(Symbol(),MODE_MINLOT) > 0.07) LotsDigits = 1; return(0); } int start() { // Spread Filter bool Spread_OK = true; if(SpreadFilter && (Ask-Bid)/Point > SpreadLimit*DQADJ) Spread_OK = false; if(AutoStop==true) { CloseAll(); return(0); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // mypoint=0; // if (Digits == 5 || Digits == 3) {mypoint=10*(MarketInfo(OrderSymbol(),MODE_POINT));} else {mypoint=(MarketInfo(OrderSymbol(),MODE_POINT));} // Fractals Upper M15 for(int a=1;a<iBars(NULL,TF);a++){ if(iFractals(NULL, PERIOD_M15, MODE_UPPER,a)!=0){ LastUpFractal=iFractals(NULL, PERIOD_M15, MODE_UPPER,a); TimeOfLastUpFractal=iTime(NULL,TF,a); break; }//end if }//end for // Fractals Lower M15 for(int s=1;s<iBars(NULL,TF);s++){ if(iFractals(NULL, PERIOD_M15, MODE_LOWER,s)!=0){ LastDownFractal=iFractals(NULL, PERIOD_M15, MODE_LOWER,s); TimeOfLastDownFractal=iTime(NULL,TF,s); break; }//end if }//end for // Fractals Upper H1 for(int v=1;v<iBars(NULL,TF);v++){ if(iFractals(NULL, PERIOD_H1, MODE_UPPER,v)!=0){ LastUpFractal_H1=iFractals(NULL, PERIOD_H1, MODE_UPPER,v); TimeOfLastUpFractal_H1=iTime(NULL,TF,v); break; }//end if }//end for // Fractals Lower H1 for(int w=1;w<iBars(NULL,TF);w++){ if(iFractals(NULL, PERIOD_H1, MODE_LOWER,w)!=0){ LastDownFractal_H1=iFractals(NULL, PERIOD_H1, MODE_LOWER,w); TimeOfLastDownFractal_H1=iTime(NULL,TF,s); break; }//end if }//end for //ObjectDelete("Fractal Fibo Retracement"); //ObjectCreate("Fractal Fibo Retracement",OBJ_FIBO,0,TimeOfLastUpFractal,LastUpFractal,TimeOfLastDownFractal,LastDownFractal); FractalEnvelope=MathRound((LastUpFractal-LastDownFractal)/Point); FractalEnvelope_H1=MathRound((LastUpFractal_H1-LastDownFractal_H1)/Point); midFractal=0; midFractal=(LastUpFractal-((LastUpFractal-LastDownFractal)/2)); CurrentATR=MathRound(iATR(Symbol(), PERIOD_M15,4,0)/Point); bool FractalIsInsideEnvelope=false; if(iClose(NULL,TF,0)<=LastUpFractal_H1 && iClose(NULL,TF,0)>=LastDownFractal_H1){ FractalIsInsideEnvelope=true; }//end if //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (Time_Opened_Protection == TRUE) { for (int j = 0; j < OrdersTotal(); j++) { OrderSelect(j, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_BUY && (OrderMagicNumber() == Magic)) { if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_1 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_2 && Bid >= OrderOpenPrice() + pips_1*DQADJ * Point) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange); Print("Prot. Level 1 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_2 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_3 && Bid >= OrderOpenPrice() + pips_2*DQADJ * Point) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange); Print("Prot. Level 2 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_3 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_4 && Bid >= OrderOpenPrice() - pips_3*DQADJ * Point) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange); Print("Prot. Level 3 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_4 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_5 && Bid >= OrderOpenPrice() - pips_4*DQADJ * Point) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange); Print("Prot. Level 4 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_5 && Bid >= OrderOpenPrice() - pips_5*DQADJ * Point) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange); Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (DayOfWeek() == 5 && Hour()>=19) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Bid, Slippage*DQADJ, Orange); Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (OrderType() == OP_SELL && (OrderMagicNumber() == Magic)) { if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_1 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_2 && Ask <= OrderOpenPrice() - pips_1*DQADJ * Point) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange); Print("Prot. Level 1 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_2 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_3 && Ask <= OrderOpenPrice() - pips_2*DQADJ * Point) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange); Print("Prot. Level 2 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_3 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_4 && Ask <= OrderOpenPrice() + pips_3*DQADJ * Point) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange); Print("Prot. Level 3 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_4 && TimeCurrent() - OrderOpenTime() < 60 * LimitTime_5 && Ask <= OrderOpenPrice() + pips_4*DQADJ * Point) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange); Print("Prot. Level 4 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (TimeCurrent() - OrderOpenTime() > 60 * LimitTime_5 && Ask <= OrderOpenPrice() + pips_5*DQADJ * Point) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange); Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } if (DayOfWeek() == 5 && Hour()>=19) { RefreshRates(); OrderClose(OrderTicket(), OrderLots(), Ask, Slippage*DQADJ, Orange); Print("Prot. Level 5 - Close Price :" + DoubleToStr(OrderClosePrice(), 4) + " Lots : " + DoubleToStr(OrderLots(), 2) + " Order Number : " + DoubleToStr(OrderTicket(), 0) + " Profit : $ " + DoubleToStr(OrderProfit(), 2)); } } } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Filter ANTI SERAKAH.. if(TargetBalance>0 && AccountEquity() >= TargetBalance) { ForceCloseAll(); return(0); } int BUY_OpenPosition = 0; int SELL_OpenPosition = 0; int TOTAL_OpenPosition = 0; int Ticket = -1; int cnt = 0; for (cnt = 0; cnt < OrdersTotal(); cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderCloseTime()==0) { TOTAL_OpenPosition++; if (OrderType() == OP_BUY) { BUY_OpenPosition++; Last_BUY_OpenPrice = OrderOpenPrice(); } if (OrderType() == OP_SELL) { SELL_OpenPosition++; Last_SELL_OpenPrice = OrderOpenPrice(); } } } if (Tradetime()==1) { if (Tradetime2()==1) Comment("\nYour_Lucky_EURGBP_rdb_v1", "\nIstirahat Dulu... Senin Pagi,Siang & Malam dan Jumat Siang & Malam (WIB)", "\n\nMulai Trading Jam = ", OpenHour, "\nSelesai Trading Jam = ", CloseHour, "\nSekarang Jam = ", Hour(), "\n\nL O T S = " + DoubleToStr(GetLots(),2), "\nB A L A N C E = " + DoubleToStr(AccountBalance(),2), "\nE Q U I T Y = " + DoubleToStr(AccountEquity(),2), //saya salut dengan teman-teman coder... //saya hanya orang pelosok yang tidak berpeluang trading karena keterbatasan dana //karena itu... saya memutuskan untuk mengoprek/membuat EA dan indi untuk digunakan para trader... //mohon kiranya jika anda menggunakan script ini... jangan menghapus kalimat dibawah... salam coder... semoga sukses... "\n\n\nEA ini FREE dan terus dikembangkan...", "\nAnda dapat konsultasi/diskusi untuk cara penggunaan ataupun pengembangannya", "\nsebagai wujud partisipasi anda dalam mendukung berlanjutnya kreatifitas kami...", "\ndiharapkan bantuan berupa donasi seikhlasnya...", "\n\nhubungi : abdulrahman_maros@yahoo.com", "\nAbdul Rahman ==> BCA : 7990026640 / LR : U7067895" ); else { Comment("\nYour_Lucky_EURGBP_rdb_v1", "\nIstirahat Dulu... Senin Pagi,Siang & Malam dan Jumat Siang & Malam (WIB)", "\n\nMulai Trading Jam = ", OpenHour, "\nSelesai Trading Jam = ", CloseHour, "\nSekarang Jam = ", Hour(), "\n\nL O T S = " + DoubleToStr(GetLots(),2), "\nB A L A N C E = " + DoubleToStr(AccountBalance(),2), "\nE Q U I T Y = " + DoubleToStr(AccountEquity(),2), //saya salut dengan teman-teman coder... //saya hanya orang pelosok yang tidak berpeluang trading karena keterbatasan dana //karena itu... saya memutuskan untuk mengoprek/membuat EA dan indi untuk digunakan para trader... //mohon kiranya jika anda menggunakan script ini... jangan menghapus kalimat dibawah... salam coder... semoga sukses... "\n\n\nEA ini FREE dan terus dikembangkan...", "\nAnda dapat konsultasi/diskusi untuk cara penggunaan ataupun pengembangannya", "\nsebagai wujud partisipasi anda dalam mendukung berlanjutnya kreatifitas kami...", "\ndiharapkan bantuan berupa donasi seikhlasnya...", "\n\nhubungi : abdulrahman_maros@yahoo.com", "\nAbdul Rahman ==> BCA : 7990026640 / LR : U7067895" ); if(TOTAL_OpenPosition <= MaxTrades && Spread_OK) { if(BarCount != iBars(NULL,TF)) { TradePerBar = 0; BarCount = iBars(NULL,TF); } RefreshRates(); if ((SELL_OpenPosition <= MaxTradePerPosition) && FractalIsInsideEnvelope && (TradePerBar <= MaxTradePerBar) && ((Ask - Last_SELL_OpenPrice >= SignalFilter*DQADJ * Point) || SELL_OpenPosition < 1 && Ask>=midFractal+(PriceFromFractal*DQADJ*Point)) && GetSignal(OP_SELL)==1) { if(AccountFreeMarginCheck(Symbol(),OP_SELL,GetLots())<=0 || GetLastError()==134) { Print("Bro, udah nggak punya Margin lagi nih, nggak bisa OP..."); } else { if(HiddenTP==true) Ticket = OrderSend(Symbol(),OP_SELL,GetLots(),Bid,Slippage*DQADJ,Bid + SL2*DQADJ * Point,0,"MyLucky"+Symbol(),Magic,0,Red); else Ticket = OrderSend(Symbol(),OP_SELL,GetLots(),Bid,Slippage*DQADJ,Bid + SL2*DQADJ * Point,Bid - TP * Point,"MyLucky"+Symbol(),Magic,0,Red); if (Ticket > 0) TradePerBar++; } } if ((BUY_OpenPosition <= MaxTradePerPosition) && FractalIsInsideEnvelope && (TradePerBar <= MaxTradePerBar) && ((Last_BUY_OpenPrice - Bid >= SignalFilter*DQADJ * Point ) || BUY_OpenPosition < 1 && Bid<=midFractal-(PriceFromFractal*DQADJ*Point)) && GetSignal(OP_BUY)==1) { if(AccountFreeMarginCheck(Symbol(),OP_BUY,GetLots())<=0 || GetLastError()==134) { Print("Bro, udah nggak punya Margin lagi nih, nggak bisa OP..."); } else { if(HiddenTP==true) Ticket = OrderSend(Symbol(),OP_BUY,GetLots(),Ask,Slippage*DQADJ,Ask - SL2*DQADJ * Point, 0,"MyLucky"+Symbol(),Magic,0,Blue); else Ticket = OrderSend(Symbol(),OP_BUY,GetLots(),Ask,Slippage*DQADJ,Ask - SL2*DQADJ * Point, Ask + TP*DQADJ * Point,"MyLucky"+Symbol(),Magic,0,Blue); if (Ticket > 0) TradePerBar++; } } } } } else Comment("\nYour_Lucky_EURGBP_rdb_v1", "\nIstirahat Dulu... Senin Pagi,Siang & Malam dan Jumat Siang & Malam (WIB)", "\n\nMulai Trading Jam = ", OpenHour, "\nSelesai Trading Jam = ", CloseHour, "\nSekarang Jam = ", Hour(), "\n\nL O T S = " + DoubleToStr(GetLots(),2), "\nB A L A N C E = " + DoubleToStr(AccountBalance(),2), "\nE Q U I T Y = " + DoubleToStr(AccountEquity(),2), //saya salut dengan teman-teman coder... //saya hanya orang pelosok yang tidak berpeluang trading karena keterbatasan dana //karena itu... saya memutuskan untuk mengoprek/membuat EA dan indi untuk digunakan para trader... //mohon kiranya jika anda menggunakan script ini... jangan menghapus kalimat dibawah... salam coder... semoga sukses... "\n\n\nEA ini FREE dan terus dikembangkan...", "\nAnda dapat konsultasi/diskusi untuk cara penggunaan ataupun pengembangannya", "\nsebagai wujud partisipasi anda dalam mendukung berlanjutnya kreatifitas kami...", "\ndiharapkan bantuan berupa donasi seikhlasnya...", "\n\nhubungi : abdulrahman_maros@yahoo.com", "\nAbdul Rahman ==> BCA : 7990026640 / LR : U7067895" ); CloseAll(); return(0); } //----------------------------------------------------------------------------- int GetSignal(int OP) { int signal=0; if (OP==OP_BUY) { if(iClose(Symbol(),TF,0)<iMA(Symbol(),TF,IMA_PERIOD,0,MODE_SMA,PRICE_OPEN,0)) signal=1; } else if (OP==OP_SELL) { if(iClose(Symbol(),TF,0)>iMA(Symbol(),TF,IMA_PERIOD,0,MODE_SMA,PRICE_OPEN,0)) signal=1; } return(signal); } //----------------------------------------------------------------------------- void CloseAll() { for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderCloseTime()==0) { if (SecurProfit()==1) { if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3*DQADJ,Blue); if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3*DQADJ,Red); } else { if (Tradetime() == 0) { if((OrderType()==OP_BUY) && (((OrderOpenPrice()-Ask)/Point) > SL1*DQADJ)) OrderClose(OrderTicket(),OrderLots(),Bid,3*DQADJ,Blue); if((OrderType()==OP_SELL) && (((Bid-OrderOpenPrice())/Point) > SL1*DQADJ)) OrderClose(OrderTicket(),OrderLots(),Ask,3*DQADJ,Red); } else { if((OrderType()==OP_BUY) && (((OrderOpenPrice()-Ask)/Point) > SL2*DQADJ)) OrderClose(OrderTicket(),OrderLots(),Bid,3*DQADJ,Blue); if((OrderType()==OP_SELL) && (((Bid-OrderOpenPrice())/Point) > SL2*DQADJ)) OrderClose(OrderTicket(),OrderLots(),Ask,3*DQADJ,Red); } } } } } //----------------------------------------------------------------------------- void ForceCloseAll() { for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderCloseTime()==0) { if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3*DQADJ,Blue); if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3*DQADJ,Red); } } } //----------------------------------------------------------------------------- int Tradetime() { int TradingTime=0; if (Hour() <= CloseHour || Hour() >= OpenHour) TradingTime=1; return(TradingTime); } //----------------------------------------------------------------------------- int Tradetime2() { int TradingTime=0; if ((DayOfWeek() == 1 && Hour() <= OpenHour) || (DayOfWeek() == 5 && Hour() >= CloseHour)) TradingTime=1; return(TradingTime); } //----------------------------------------------------------------------------- double GetLots() { double lots,MD,RM,FMM,MinLots,LotSize; int lotsdigit; LotSize = MarketInfo(Symbol(), MODE_LOTSIZE); // MD = NormalizeDouble(MarketInfo(Symbol(), MODE_LOTSTEP), 2); // RM = NormalizeDouble(MarketInfo(Symbol(), MODE_MARGINREQUIRED), 4); // FMM = (RM+5)*100; /* if(LotsDigit==0) { if (MD==0.01) lotsdigit=2; else lotsdigit=1; LotsDigit=lotsdigit; } */ //if (MM==true) lots = NormalizeDouble(AccountFreeMargin()/(FMM/Risk)-0.05,LotsDigit); if ( MM ) lots = NormalizeDouble((AccountFreeMargin()*Risk/LotSize)/MaxTrades,LotsDigits); else lots=Lots; MinLots=NormalizeDouble(MarketInfo(Symbol(),MODE_MINLOT),LotsDigits); //if (LotsDigit == 2) MinLots = 0.01; if (lots < MinLots) lots = MinLots; if (lots > MaxLots) lots = MaxLots; return (lots); } //----------------------------------------------------------------------------- double TickValue() { double tv; tv = NormalizeDouble(MarketInfo(Symbol(), MODE_TICKVALUE), 4); return(tv); } //----------------------------------------------------------------------------- int SecurProfit() { int sp=0; if (OrderProfit()>(TickValue()*GetLots()*TP*DQADJ)) sp=1; return(sp); } //-----------------------------------------------------------------------------
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Indicator Curves created:
Indicators Used:
Fractals
Indicator of the average true range
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
It automatically opens orders when conditions are reached
Other Features: