Your_Lucky_EURGBP_rdb_v1_001

Author: rahman_DGBeta (_rdb_)
Price Data Components
Series array that contains open time of each barSeries array that contains close prices for each bar
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It automatically opens orders when conditions are reached
Indicators Used
FractalsIndicator of the average true rangeMoving average indicator
0 Views
0 Downloads
0 Favorites
Your_Lucky_EURGBP_rdb_v1_001
//+------------------------------------------------------------------+
//|                                     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    = 20; //19
extern  int     CloseHour   = 4;
//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      = 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    = 2;

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        = 32; //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;
double   mypoint = 0.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));}
   mypoint=(MarketInfo(Symbol(),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_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)
         {
            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,"MyLucky"+Symbol(),Magic,0,Red); 
                  else
                     Ticket = OrderSend(Symbol(),OP_SELL,GetLots(),Bid,Slippage,Bid + SL2 * mypoint,Bid - TP * mypoint,"MyLucky"+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,"MyLucky"+Symbol(),Magic,0,Blue); 
                  else
                     Ticket = OrderSend(Symbol(),OP_BUY,GetLots(),Ask,Slippage,Ask - SL2 * mypoint, Ask + TP * mypoint,"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(),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);
}
//----------------------------------------------------------------------------- 
   

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