escape2reversed

Profit factor:
0.98
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reached
Miscellaneous
It plays sound alerts
6 Views
0 Downloads
0 Favorites
escape2reversed
//+------------------------------------------------------------------+
//|                                                      robotic.mq4 |
//|                                    Copyright © 2008, OGUZ BAYRAM |
//|                                            es_cape77@hotmail.com |
//+------------------------------------------------------------------+
extern int       iTakeProfitCloseValue=3;
extern int       iTakeProfitMaxDecCount=3; 

static bool      bTakeProfitPrevious=-1;
static int       iTakeProfitDecraeseCount=0;
static int       iTakeProfitMaxValue=-1;
extern double lTakeProfit = 3;
extern double sTakeProfit = 3;
extern double lTrailingStop = 20;
extern double sTrailingStop = 10;
extern color clOpenBuy = Blue;
extern color clCloseBuy = Aqua;
extern color clOpenSell = Red;
extern color clCloseSell = Violet;
extern color clModiBuy = Blue;
extern color clModiSell = Red;
extern string Name_Expert = "Robotic";
extern int Slippage = 1;
extern bool UseSound = true;

extern bool FractionalPips = true;
extern string NameFileSound = "Alert.wav";
extern double Lots = 0.1;


void deinit() {
   Comment("");
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start(){

double SL = 100.0;
   int totalOrderCount=OrdersTotal();
   for(int pos=0;pos<totalOrderCount;pos++)
   {
     if( OrderSelect(pos,SELECT_BY_POS)==false ) continue;
     //orderý seçtik þu an
     if (OrderSymbol() == Symbol()) //bu satýr sadece ea'yý attýðýnýz grafiðin sembolündeki para ile açýlan emirleriniz üzerinde iþlem yapmak için konuldu
     { 
         if ( OrderProfit() > 0 )
         {


	    //TAKE PROFÝT DÜÞMEYE BAÞLARSA KAPAT
	    //eðer kârdaysak ve peþpeþe iTakeProfitMaxDecCount sayýsýndan daha çok düþüþ yaþamýþsak, (TP: 100, 90, 80, 70 gibi, burada 4 kez düþüþ oldu demektir) pozisyonu hiç gözünün yaþýna bakmadan kapatýr
	    //fakat kapatabilmek için birde istenilen minimum deðeri geçmiþmi bakýyorum hesabý þöyle (Profit > iTakeProfitCloseValue * 7.0) isterseniz bu kýsýtý kaldýrýn if'den 
		
            if (OrderProfit()> iTakeProfitMaxValue)
               iTakeProfitMaxValue = OrderProfit();

            if (bTakeProfitPrevious > OrderProfit())
               iTakeProfitDecraeseCount = iTakeProfitDecraeseCount + 1;
            else if (bTakeProfitPrevious < OrderProfit())
            {
               iTakeProfitDecraeseCount = iTakeProfitDecraeseCount - 1;
               if (iTakeProfitDecraeseCount<0)
                  iTakeProfitDecraeseCount = 0;
            }
            //Print(Symbol()," TPCount: ",iTakeProfitDecraeseCount);
            bTakeProfitPrevious = OrderProfit();         
         
            if (( iTakeProfitMaxDecCount <= iTakeProfitDecraeseCount) && (OrderProfit() >= (iTakeProfitCloseValue * 7.0))  )
            {
               bool cticket;
               Print(Symbol()," P:",Period()," take profit ",iTakeProfitDecraeseCount," kez düþtü kapattýk. Fiyat:",Ask);
               /*if ( OrderType() == OP_BUY )
               {  
                    Print(Symbol()," P:",Period()," take profit ",iTakeProfitDecraeseCount," kez düþtü kapattýk. Fiyat:",Ask);
                    cticket = OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);                    
               }
               if ( OrderType() == OP_SELL )
               {  
                    Print(Symbol()," P:",Period()," take profit ",iTakeProfitDecraeseCount," kez düþtü kapattýk. Fiyat:",Bid);
                    cticket = OrderClose(OrderTicket(),OrderLots(),Bid,3,Yellow);                    
               }*/

               //yeni close iþlemi
               double Price=OrderOpenPrice();       
               int Ticket=OrderTicket();         
               double Lot=OrderLots();           

		//artýk pozisyonu kapatmayý kafaya koyduk hemen kapatýyoruz ama bazen broker kapatmýyor istediðimiz yerden, 
		//onun için 7 kez peþ peþe deniyoruz
               int AttemptCount=0;
               while(true)                                 
               {
                  switch(OrderType())                       
                    {
                     case 0: double Price_Cls=Bid;
                        string Text="Buy ";       
                        break;                    
                     case 1: Price_Cls=Ask;       
                        Text="Sell ";             
                    }
                  //Print("Kapatmaya çalýþýyoruz ",Text," ",Ticket);
                  bool Ans=OrderClose(Ticket,Lot,Price_Cls,2);
   
                  if (Ans==true)                            // kapantý
                    {
                     Print("Kapattýk :) ",Text," ",Ticket," Attemp: ",AttemptCount);
                     break;                                 //while'ý kýrýyoruz
                    }
   
                  //hata var tekrar deneyelim
                  Sleep(300);                
                  RefreshRates();   
                  AttemptCount++;  
                  if (AttemptCount > 7) break;       
                  continue;                  
               }//while
            }//kapatma if'inin sonu







            //BURALAR STOP LOSS AYAR ÝÞLEMLERÝ 
	    //SL YOKSA KOYARMI BÝLMÝYORUM DENEMEDÝM :)), 
	    //BURASI SL'yi eðer kârda ise pozisyon daha iyi yere taþýr sürekli olarak, böylece sert dönüþlerde daha az zarar görmemize yarar
            int temp = -1;
            if (OrderType() == OP_BUY)
            {
               double ftemp = SL;               
               if (Digits > 4)
               {  
                  ftemp = ftemp*MathPow(100,(Digits-4));//  
               } else {
                  ftemp = ftemp*MathPow(100,(4-Digits));//                    
               }
               
               if ( OrderStopLoss() < (Bid-ftemp*Point) )
               {
                 OrderModify(OrderTicket(),OrderOpenPrice(),Bid-ftemp*Point,OrderTakeProfit(),0,Blue);
               }
               
               temp = GetLastError();
               if (temp>0)
               {
                     Print(Symbol()," P: ",Period(),", ORDER DEÐÝÞTÝ HATA - SL: ", Bid-ftemp*Point," Err: ",temp);
               }            
             } else {
               double ftemp2 = SL;
               if (Digits > 4)
               {  
                  ftemp2 = ftemp2*MathPow(100,(Digits-4));//  
               } else {
                  ftemp2 = ftemp2*MathPow(100,(4-Digits));//                    
               }
    
               
               if (OrderStopLoss() > ( Ask+ftemp2*Point ))
                  OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ftemp2*Point,OrderTakeProfit(),0,Blue);
                  
               temp = GetLastError();
               if (temp>0)
               {
                  Print(Symbol()," P: ",Period(),", ORDER DEÐÝÞTÝ HATA - SL:", Ask+ftemp2*Point," Err: ",temp);
               }
            }//if orderType
            
         }//if orderprofit
     }//if ordersymbol
   }//for
   if(Bars<100){
      Print("bars less than 100");
      return(0);
   }
   if (Digits==3 || Digits==5)
   
   if(lTakeProfit<1){
      Print("TakeProfit less than 1");
      return(0);
   }
   if(sTakeProfit<1){
      Print("TakeProfit less than 1");
      return(0);
   }

   double diClose0=iClose(NULL,5,0);
   double diMA1=iMA(NULL,5,5,0,MODE_SMA,PRICE_OPEN,1);
   double diClose2=iClose(NULL,5,0);
   double diMA3=iMA(NULL,5,4,0,MODE_SMA,PRICE_OPEN,1);

   if(AccountFreeMargin()<(1000*Lots)){
      Print("We have no money. Free Margin = ", AccountFreeMargin());
      return(0);
   }
   if (!ExistPositions()){

      if ((diClose0>diMA1)){
         OpenBuy();
         return(0);
      }

      if ((diClose2<diMA3)){
         OpenSell();
         return(0);
      }
   }
   TrailingPositionsBuy(lTrailingStop);
   TrailingPositionsSell(sTrailingStop);
   return (0);
}

bool ExistPositions() {
for (int i=5; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol()) {
return(True);
}
} 
} 
return(false);
}
void TrailingPositionsBuy(int trailingStop) { 
   for (int i=5; i<OrdersTotal(); i++) { 
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { 
         if (OrderSymbol()==Symbol()) { 
            if (OrderType()==OP_BUY) { 
               if (Bid-OrderOpenPrice()>trailingStop*Point) { 
                  if (OrderStopLoss()<Bid-trailingStop*Point) 
                     ModifyStopLoss(Bid-trailingStop*Point); 
               } 
            } 
         } 
      } 
   } 
} 
void TrailingPositionsSell(int trailingStop) { 
   for (int i=5; i<OrdersTotal(); i++) { 
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { 
         if (OrderSymbol()==Symbol()) { 
            if (OrderType()==OP_SELL) { 
               if (OrderOpenPrice()-Ask>trailingStop*Point) { 
                  if (OrderStopLoss()>Ask+trailingStop*Point || 
OrderStopLoss()==0)  
                     ModifyStopLoss(Ask+trailingStop*Point); 
               } 
            } 
         } 
      } 
   } 
} 
void ModifyStopLoss(double ldStopLoss) { 
   bool fm;
   fm = OrderModify(OrderTicket(),OrderOpenPrice
(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE); 
   if (fm && UseSound) PlaySound(NameFileSound); 
} 

void OpenBuy() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 
   ldLot = GetSizeLot(); 
   ldStop = 0; 
   ldTake = GetTakeProfitBuy(); 
   lsComm = GetCommentForOrder(); 
   OrderSend(Symbol
(),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm,0,0,clOpenBuy); 
   if (UseSound) PlaySound(NameFileSound); 
} 
void OpenSell() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 

   ldLot = GetSizeLot(); 
   ldStop = 0; 
   ldTake = GetTakeProfitSell(); 
   lsComm = GetCommentForOrder(); 
   OrderSend(Symbol
(),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm,0,0,clOpenSell); 
   if (UseSound) PlaySound(NameFileSound); 
} 
string GetCommentForOrder() { return(Name_Expert); } 
double GetSizeLot() { return(Lots); } 
double GetTakeProfitBuy() { return(Ask+lTakeProfit*Point); } 
double GetTakeProfitSell() { return(Bid-sTakeProfit*Point); } 

Profitability Reports

GBP/USD Jul 2025 - Sep 2025
0.23
Total Trades 1938
Won Trades 1932
Lost trades 6
Win Rate 99.69 %
Expected payoff -0.98
Gross Profit 579.60
Gross Loss -2480.40
Total Net Profit -1900.80
-100%
-50%
0%
50%
100%
GBP/CAD Jul 2025 - Sep 2025
0.17
Total Trades 762
Won Trades 756
Lost trades 6
Win Rate 99.21 %
Expected payoff -1.04
Gross Profit 164.04
Gross Loss -958.19
Total Net Profit -794.15
-100%
-50%
0%
50%
100%
GBP/AUD Jul 2025 - Sep 2025
0.19
Total Trades 603
Won Trades 597
Lost trades 6
Win Rate 99.00 %
Expected payoff -0.86
Gross Profit 117.87
Gross Loss -636.34
Total Net Profit -518.47
-100%
-50%
0%
50%
100%
EUR/USD Jul 2025 - Sep 2025
0.00
Total Trades 266
Won Trades 263
Lost trades 3
Win Rate 98.87 %
Expected payoff -1190.07
Gross Profit 78.90
Gross Loss -316637.90
Total Net Profit -316559.00
-100%
-50%
0%
50%
100%
USD/JPY Jan 2025 - Jul 2025
0.83
Total Trades 7998
Won Trades 7992
Lost trades 6
Win Rate 99.92 %
Expected payoff -0.04
Gross Profit 1627.50
Gross Loss -1949.46
Total Net Profit -321.96
-100%
-50%
0%
50%
100%
USD/CHF Jan 2025 - Jul 2025
1.68
Total Trades 2367
Won Trades 2361
Lost trades 6
Win Rate 99.75 %
Expected payoff 0.14
Gross Profit 832.42
Gross Loss -494.33
Total Net Profit 338.09
-100%
-50%
0%
50%
100%
USD/CAD Jan 2025 - Jul 2025
0.89
Total Trades 2292
Won Trades 2286
Lost trades 6
Win Rate 99.74 %
Expected payoff -0.03
Gross Profit 490.68
Gross Loss -554.31
Total Net Profit -63.63
-100%
-50%
0%
50%
100%
NZD/USD Jan 2025 - Jul 2025
6.13
Total Trades 643
Won Trades 637
Lost trades 6
Win Rate 99.07 %
Expected payoff 0.25
Gross Profit 191.10
Gross Loss -31.20
Total Net Profit 159.90
-100%
-50%
0%
50%
100%
GBP/USD Jan 2025 - Jul 2025
0.13
Total Trades 1349
Won Trades 1343
Lost trades 6
Win Rate 99.56 %
Expected payoff -1.93
Gross Profit 402.90
Gross Loss -3008.30
Total Net Profit -2605.40
-100%
-50%
0%
50%
100%
GBP/CAD Jan 2025 - Jul 2025
0.43
Total Trades 1346
Won Trades 1340
Lost trades 6
Win Rate 99.55 %
Expected payoff -0.29
Gross Profit 290.18
Gross Loss -677.38
Total Net Profit -387.20
-100%
-50%
0%
50%
100%

Comments