Your_Lucky_EURGBP_rdb_v1a





//+------------------------------------------------------------------+
//|                                     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...

//--------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  int     OpenHour    = 22; //19
extern  int     CloseHour   = 5;
//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      = 50;     // persentase MM

extern  string  Lots_Info = "Kalau MM=false, isi Lots yg mau di pake.";
extern  double  Lots      = 0.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   = 2;
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      = 50;
extern  int     MaxTrades         = 5;
extern  int     MaxTradePerBar    = 2;  //3
extern  int     MaxTradePerPosition = 3;
extern  int     IMA_PERIOD        = 11;
extern  int     Magic             = 11111;
extern  double  mypoint           = 0.0001;

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;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if(1==2 || 3==4 && 5==6) return (0);
   
   if(7==8 || 9==10 && 11==12) return (0);
   return(0);
  }
 
int start()
{ 

   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));}

   for(int a=1;a<Bars;a++){
      if(iFractals(NULL, PERIOD_M15, MODE_UPPER,a)!=0){
         LastUpFractal=iFractals(NULL, PERIOD_M15, MODE_UPPER,a);
         TimeOfLastUpFractal=Time[a];
         break;
         }//end if
      }//end for
   for(int s=1;s<Bars;s++){
      if(iFractals(NULL, PERIOD_M15, MODE_LOWER,s)!=0){
         LastDownFractal=iFractals(NULL, PERIOD_M15, MODE_LOWER,s);
         TimeOfLastDownFractal=Time[s];
         break;
         }//end if
      }//end for

   for(int v=1;v<Bars;v++){
      if(iFractals(NULL, PERIOD_H1, MODE_UPPER,v)!=0){
         LastUpFractal_H1=iFractals(NULL, PERIOD_H1, MODE_UPPER,v);
         TimeOfLastUpFractal_H1=Time[v];
         break;
         }//end if
      }//end for
   for(int w=1;w<Bars;w++){
      if(iFractals(NULL, PERIOD_H1, MODE_LOWER,w)!=0){
         LastDownFractal_H1=iFractals(NULL, PERIOD_H1, MODE_LOWER,w);
         TimeOfLastDownFractal_H1=Time[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)/mypoint);
   FractalEnvelope_H1=MathRound((LastUpFractal_H1-LastDownFractal_H1)/mypoint);
   midFractal=0;
   midFractal=(LastUpFractal-((LastUpFractal-LastDownFractal)/2));
   CurrentATR=MathRound(iATR(Symbol(), PERIOD_M15,4,0)/mypoint);

   bool FractalIsInsideEnvelope=false;
   if(Close[0]<=LastUpFractal_H1 && Close[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 * mypoint) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, 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 * mypoint) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, 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 * mypoint) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, 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 * mypoint) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, 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 * mypoint) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, 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, 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 * mypoint) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, 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 * mypoint) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, 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 * mypoint) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, 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 * mypoint) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, 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 * mypoint) {
               RefreshRates();
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, 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, 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_v1a",
                 "\nIstirahat Dulu... Senin Pagi,Siang & Malam dan Jumat Siang & Malam (WIB)",
                 "\n\nMulai Trading Jam    = ", OpenHour,
                 "\nSelesai Trading Jam  = ", CloseHour,
                 "\nSekarang Jam          = ", Hour(),

                  "\n\nFractal Envelope       = "+FractalEnvelope+" pips",
                  "\nMidFractal                = "+DoubleToStr(midFractal,4),
                  "\nATR(5)                    = "+CurrentATR+" pips",
                 
                  "\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_v1a",
                 "\nIstirahat Dulu... Senin Pagi,Siang & Malam dan Jumat Siang & Malam (WIB)",
                 "\n\nMulai Trading Jam    = ", OpenHour,
                 "\nSelesai Trading Jam  = ", CloseHour,
                 "\nSekarang Jam          = ", Hour(),

                  "\n\nFractal Envelope       = "+FractalEnvelope+" pips",
                  "\nMidFractal                = "+DoubleToStr(midFractal,4),
                  "\nATR(5)                    = "+CurrentATR+" pips",
                 
                  "\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)
         {
            if(BarCount != Bars)
            {
               TradePerBar = 0;
               BarCount = Bars;
            }

            RefreshRates();
            if ((SELL_OpenPosition <= MaxTradePerPosition) && FractalIsInsideEnvelope && (TradePerBar <= MaxTradePerBar) && ((Ask - Last_SELL_OpenPrice >= SignalFilter * mypoint) || SELL_OpenPosition < 1 && Ask>=midFractal+(PriceFromFractal*mypoint)) && 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,Bid + SL2 * mypoint,0,"Your_Lucky"+Symbol(),Magic,0,Red); 
                  else
                     Ticket = OrderSend(Symbol(),OP_SELL,GetLots(),Bid,Slippage,Bid + SL2 * mypoint,Bid - TP * mypoint,"Your_Lucky"+Symbol(),Magic,0,Red); 
                  if (Ticket > 0) TradePerBar++;
               }
            }
            if ((BUY_OpenPosition <= MaxTradePerPosition) && FractalIsInsideEnvelope && (TradePerBar <= MaxTradePerBar) && ((Last_BUY_OpenPrice - Bid >= SignalFilter * mypoint ) || BUY_OpenPosition < 1 && Bid<=midFractal-(PriceFromFractal*mypoint)) && 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,Ask - SL2 * mypoint, 0,"Your_Lucky"+Symbol(),Magic,0,Blue); 
                  else
                     Ticket = OrderSend(Symbol(),OP_BUY,GetLots(),Ask,Slippage,Ask - SL2 * mypoint, Ask + TP * mypoint,"Your_Lucky"+Symbol(),Magic,0,Blue); 
                  if (Ticket > 0) TradePerBar++;
               }
            }
         
          }
       }
   }
   else
         Comment("\nYour_Lucky_EURGBP_rdb_v1a",
                 "\nIstirahat Dulu... Senin Pagi,Siang & Malam dan Jumat Siang & Malam (WIB)",
                 "\n\nMulai Trading Jam    = ", OpenHour,
                 "\nSelesai Trading Jam  = ", CloseHour,
                 "\nSekarang Jam          = ", Hour(),

                  "\n\nFractal Envelope       = "+FractalEnvelope+" pips",
                  "\nMidFractal                = "+DoubleToStr(midFractal,4),
                  "\nATR(5)                    = "+CurrentATR+" pips",
                 
                  "\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(),0,0)<iMA(Symbol(),0,IMA_PERIOD,0,MODE_SMA,PRICE_OPEN,0)) signal=1;
  }
  else if (OP==OP_SELL)
  {
   if(iClose(Symbol(),0,0)>iMA(Symbol(),0,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,Blue); 
            if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red); 
         } 
         else 
         { 
            if (Tradetime() == 0)
            {
               if((OrderType()==OP_BUY)  && (((OrderOpenPrice()-Ask)/mypoint) > SL1)) 
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue); 
               if((OrderType()==OP_SELL) && (((Bid-OrderOpenPrice())/mypoint) > SL1)) 
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red); 
            }
            else
            {
               if((OrderType()==OP_BUY)  && (((OrderOpenPrice()-Ask)/mypoint) > SL2)) 
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue); 
               if((OrderType()==OP_SELL) && (((Bid-OrderOpenPrice())/mypoint) > SL2)) 
               OrderClose(OrderTicket(),OrderLots(),Ask,3,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,Blue); 
            if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,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==true) lots = NormalizeDouble((AccountFreeMargin()*Risk/LotSize)/MaxTrades,LotsDigit);
   else lots=Lots;
   MinLots=NormalizeDouble(MarketInfo(Symbol(),MODE_MINLOT),2);    
   //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)) sp=1; 
   return(sp);
}
//----------------------------------------------------------------------------- 
   





Sample





Analysis



Market Information Used:

Series array that contains open time of each bar
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:

BackTest : EURUSD on H1

From 2009-08-01 to 2009-10-01 Profit Factor:1.32 Total Net Profit:148.90

BackTest : EURUSD on H1

From 2009-12-01 to 2010-01-17 Profit Factor:2.41 Total Net Profit:349.20

BackTest : EURUSD on H1

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

BackTest : EURUSD on H1

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

BackTest : EURUSD on H1

From 2010-05-01 to 2010-05-31 Profit Factor:1.38 Total Net Profit:164.52

BackTest : EURUSD on H1

From 2010-06-01 to 2010-06-30 Profit Factor:1.89 Total Net Profit:164.84

BackTest : GBPUSD on H1

From 2010-01-01 to 2010-02-27 Profit Factor:0.64 Total Net Profit:-380.11

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-12-01 to 2010-01-01 Profit Factor:1.91 Total Net Profit:148.37

BackTest : USDCHF on H1

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

BackTest : USDJPY on H1

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

Request Backtest for Your_Lucky_EURGBP_rdb_v1a


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

Pair: Period: