Orders Execution
                
            Miscellaneous
                
            
                            4
                            Views
                        
                    
                            1
                            Downloads
                        
                    
                            0
                            Favorites
                        
                    
                    RTS ea 1[1]
                    
                
                //+------------------------------------------------------------------+
//|                                                    RTS 1.1.2.mq4 |
//|                                                       by TaXiRaN |
//|                    No Copyright, created 2 Jun 2006, Open Source |
//|                                         http://www.forex-tsd.com |
//|        Freely receive, Freely give. Please post updated version. |
//+------------------------------------------------------------------+
#property copyright "Created in 2006, Open Source Project by TaXiRaN"
#property link      "http://www.forex-tsd.com"
extern int     idBASE = 100000; // Change this number if running more than one EA on the same pair.
extern double  Lots = 0.10;
extern int     TakeProfit = 80;
extern int     InitialStop = 20;
extern bool    Alerts = true;
extern string  StepStops = "Trailing Stops Options";
extern bool    UseStepStops = false; // This will use the StepStops() Function.
extern int     BreakEven = 10; // Move StopLoss to Order Open Price.
extern int     TSactivation = 5; // TSactivation will set the point where the Trailing will start. 
extern int     StepSize = 5;
extern int     MinDistance = 10; // Min Distance between StopLoss and Market Price.
extern bool    CheckExit = true; // 
extern string  TimeTrade = "An Options For Using Hour Trade";
extern bool    UseHourTrade = false; // Time Filter.
extern int     FromHourTrade = 1; // Start Trading on this Hour.
extern int     ToHourTrade = 11; // End Trading on this Hour.
int      ID;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init(){
    ID=idBASE;
    return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() {
   if (UseStepStops){
      if (ExistPositions()){
      StepStops();
      }
   }
   if (UseHourTrade){
      if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)){
      Comment("\n||  Out of Trading Time");
      return(0);
      }    
   }
   if(AccountFreeMargin()<(1000*Lots)){
      Comment("\n|| Free Margin =  ",AccountFreeMargin(),"\n||  We have no money.");
      return(0);
   }
   if (!ExistPositions()){
   CheckOpen();
   }
   if (CheckExit && ExistPositions()){
   CheckExit();
   }
   
}
//////////////////////////////////////////////////////////////////////////////////////////////
void CheckOpen() {
   if (Juice() ==1){
      if (StopReversal() ==1 && CoG() ==1){ // up trend for BUY signal.
      OpenBuy();
      return(0);
      }
      if (StopReversal() ==2 && CoG() ==2){ // down trend for SELL signal.
      OpenSell();
      return(0);
      }      
   }
}
//////////////////////////////////////////////////////////////////////////////////////////////
int CheckExit() {
    if (OrderType()==OP_BUY){
      if (Juice() ==2 || CoG() ==2){
      OrderClose(OrderTicket(),OrderLots(),Bid,2,Aqua);
      }
    }
    if (OrderType()==OP_SELL){
      if (Juice() ==2 || CoG() ==1){
      OrderClose(OrderTicket(),OrderLots(),Ask,2,Magenta);
      }      
    }
}
//////////////////////////////////////////////////////////////////////////////////////////////
int Juice() {
   double Juice0=iCustom(NULL,15,"Juice",7,0.0004,0,0);
   double Juice1=iCustom(NULL,5,"Juice",7,0.0004,0,0);
      if (Juice0>0.0006 && Juice1>0.0004)    return(1); // Trend
      if (Juice0<0.0006 && Juice1<0.0004)    return(2); // Rang
}
//////////////////////////////////////////////////////////////////////////////////////////////
int StopReversal() {
   int bars=Bars;
      for (int i=0; i<=bars; i++){
         
         bool up = iCustom(NULL,5,"StopReversal",0.001,0,i);
         bool dw = iCustom(NULL,5,"StopReversal",0.001,1,i);
         if (up==true){
         return(1);
         break;
         }
         if (dw==true){
         return(2);
         break;
         }
      }
}
//////////////////////////////////////////////////////////////////////////////////////////////
int CoG() {
   double CoG1=iCustom(NULL,15,"Center of Gravity",10,200,0,0); // Green Line
   double CoG2=iCustom(NULL,15,"Center of Gravity",10,200,1,0); // Red Line
   
 
      if (CoG1>CoG2)    return(1); // UP
      if (CoG1<CoG2)    return(2); // DOWN
}
//////////////////////////////////////////////////////////////////////////////////////////////
void OpenBuy() { 
   double sl, tp; 
   string Comm;
   bool OB; 
   
   sl = MarketInfo(Symbol(),MODE_ASK)-InitialStop*Point;
   tp = MarketInfo(Symbol(),MODE_ASK)+TakeProfit*Point; 
   Comm = "[RTS 1.1.2]"+" - "+ID; 
   OB = OrderSend(Symbol(),OP_BUY,Lots,Ask,2,sl,tp,Comm,ID,0,DeepSkyBlue); 
   if (OB && Alerts) Alert("[RTS 1.1.2] - Buy Signal on ",Symbol()); 
} 
//////////////////////////////////////////////////////////////////////////////////////////////
void OpenSell() { 
   double sl, tp;
   string Comm; 
   bool OS; 
   sl = MarketInfo(Symbol(),MODE_BID)+InitialStop*Point; 
   tp = MarketInfo(Symbol(),MODE_BID)-TakeProfit*Point; 
   Comm = "[RTS 1.1.2]"+" - "+ID; 
   OS = OrderSend(Symbol(),OP_SELL,Lots,Bid,2,sl,tp,Comm,ID,0,Magenta); 
   if (OS && Alerts) Alert("[RTS 1.1.2] - Sell Signal on ",Symbol()); 
} 
//////////////////////////////////////////////////////////////////////////////////////////////
bool ExistPositions() {
	for (int i=0; i<OrdersTotal(); i++) {
		if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
			if (OrderSymbol()==Symbol() && OrderMagicNumber()==ID) {
				return(true);
			}
		} 
	} 
	return(false);
}
//////////////////////////////////////////////////////////////////////////////////////////////
void StepStops() {
    bool    BE=false;
    double  BuyStop, SellStop;
    int     total=OrdersTotal(), k, digit=MarketInfo(Symbol(), MODE_DIGITS);
    for (int cnt=0; cnt<total; cnt++){
      OrderSelect(cnt, SELECT_BY_POS);   
      int mode=OrderType();    
        if (OrderSymbol()==Symbol() && OrderMagicNumber()==ID){
           if (mode==OP_BUY){
           BuyStop = OrderStopLoss();
               if (Bid-OrderOpenPrice()>0 || OrderStopLoss()==0){
                  if (Bid-OrderOpenPrice()>=BreakEven*Point && !BE){
                  BuyStop = OrderOpenPrice();
                  BE=true;
                  }
                  if (OrderStopLoss()==0){
                  BuyStop = OrderOpenPrice()-InitialStop*Point;
                  k = 1;
                  BE=false;
                  }
                  if (Bid-OrderOpenPrice()>=TSactivation*Point){
                     if (Bid-OrderOpenPrice()>=k*StepSize*Point){ 
                     BuyStop = OrderStopLoss()+StepSize*Point;
                        if (Bid-BuyStop>=MinDistance*Point){
                        BuyStop = BuyStop;
                        k = k+1;
                        }else
                        BuyStop = OrderStopLoss();
                     } 
                  }
               OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(BuyStop, digit),OrderTakeProfit(),0,LightGreen);
			      return(0);
			      }
			   }
			   
            if (mode==OP_SELL){
            SellStop = OrderStopLoss();
               if (OrderOpenPrice()-Ask>0 || OrderStopLoss()==0){ 
                  if (OrderOpenPrice()-Ask>=BreakEven*Point && !BE){
                  SellStop = OrderOpenPrice();
                  BE=true;
                  }
                  if (OrderStopLoss()==0){
                  SellStop = OrderOpenPrice()+InitialStop*Point;
                  k = 1;
                  BE=false;
                  }
                  if (OrderOpenPrice()-Ask>=TSactivation*Point){
                     if (OrderOpenPrice()-Ask>=k*StepSize*Point){ 
                     SellStop = OrderStopLoss()-StepSize*Point;
                        if (SellStop-Ask>=MinDistance*Point){
                        SellStop = SellStop;
                        k = k+1;
                        }else
                        SellStop = OrderStopLoss();
                     } 
                  }
               OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(SellStop, digit),OrderTakeProfit(),0,Yellow);
               return(0);
               }    
            }
         }   
      } 
}
//////////////////////////////////////////////////////////////////////////////////////////////
                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ñ×ußLª@N0uýO<[2&;Q	H+ûuú\7Ë@¸o¯Ó¸½K®SJ¹Q8R.EøTöN÷}.;YV(µÉ·Mþ!ñRáé
Ìð£</hIôQ®nLeu}7àæÍ¥#»´¿¡¼N,kKÈɺ0ÄBróó
øD¤÷¤óý7¥ b®ûãù¤ï((Ë_¹jêZã¶¢
@êbÖµ-ãÊvMât÷ÎËýÊo¸8ÿüõ¸Fî×Ò£ªk{¸;¥ø_`§ÞrPuè¡Æ½Þy²<«Q«z!G"o¿þPÍ7éðüÇÍG)9y~FEU`Õײ9n(ùQÈ®²Ï'£KVËÍy¥¹Òx¢7èv 88¨üDõÅa
4):õ?$ø#%MrEÆyq5¨¥.´½Øw±KbxV/+º¯wXº¥Þ·Àp¶ìA.ϪZ¹ónñ pÎï#Å7iOÀñ@²t
ÀPÔ2yÇá|âÀ½Ê+ôí¡uOË	¬³ÔÒrÿÅ<$p]òÈæèVø]ÔMá°æ¸çV\6Îýë
¥ ßïïп°mÿmÉIáU!#Oôc<ÞååX]Ì8û[öáÉa§ÍÉyäç¡ëøÎ0ˬ]À8çäNYJÐ_ñMÞNüÌc©M9¦FŰ
Îl{=7	[Ub';"z¡²kÕ6vÏ×)`öï¹dÌ¿t¸SêÛyJ|ymO[Ò©³¼Gfqc^¨J)gÓ{O]Àϧ5%aÈ»,U¢{))¼WÏ>Ê\m;LT»Ôm Z¹ììZ"å?%
è.|6¦Gþ
;næ5+¸çIªS}6½º*lñy²cä§×ø·+ô³AÃ÷7eq(£i0¯æ¡jñ è¨ttÞ¡Mþ$ì)Í¢îÒz¼ÈUð³ô?ÀÉÀÈ[³â¶ÝÅàvÊlkÆìVÍöôü.ÐMá,Røî꽫D®å²û«kR%5çÕ"wÝO½yø3ÁæÈ "¹8üJø¢6?%Q<Ô*/]]ÚET>Ãïí:+XÄÇZB)[¶O y¨¯~rÛ´H±Jç³áÈ;n2C45tÚÄÏÁVED~ëø(§E_Oë1=2_»·yñÍMYÜ;dGhë*Oª]<º[W7·Û89ÅJn¶xrQ_-õHãwgMb¨1bÓÖ*Úö=8?÷ Õ>OçÜÉrüÞu¯H.õr»¸VaײP¾sRëWÛÍ~ZÈv
½Ã¿ë/z}ò}UÛÙ=Æ=zt¦Ç£!ùCì5{À!vÓ2/õ'U*Ó_~ümjË/,K?x½à.Ù6£åYïÝk
O6¦:ßâoÀ=mû¬Îz\³?r ±úé¶eú,2XûÓ¼[ó"<
¡Ó<éMßxQ§öõzÅ+«ëô:ëåïÚ!Õó¦´8§IÇ|H°×ЧÈa'`m9l
¤H¦_ÅKmø¹!@åÈÑ0¦HãÚÖ4] Ú!¿ålE¡ åJËÙ×¢1Ù3ø+\ó
]ð*w3)@.ÏêÇÏÂ2
· ¸J\©:ئ<øGÿïú¯ü?4Sd2m¶Òö?RÐ6²¶¨Ë,#ªËÖÒ·iR|´-XÏM0â²Wì:£¥]rrÁà¥Y#¤ZRäV?æ/ÒÞÆ³QîÓ{¾Ó_ÙÁMg:®Ý>ÿÇvû=?±óñøµÇMânÏNGbqf-niáê/v¯À/dz\<3©'Eé$ºÄÍóIÕÙô6\Ä|X%ÁÑÛÎ]/!À×]Âð·î¾,i$!_@~W©sº)ÎU«>Ûá°Çj¹5ÁÏáäYQ©¢VÔéwV³
[!_¬ø¨àV´d¤C2ÐÙÇ`x~ÚZ£éþ0à£qTÄ Ë¼¶¬Aø§c43
tmD"SÈ mNj%þë¼Gâ»ÎÓºUNõPsø{à	é
Ûê±µRëqÀ-©Y«%Y	µwWQ 	K¤bÅí±éNì_<ï ½_×<e##¦)ضi"