RTS ea 1[1]

Author: Created in 2006, Open Source Project by TaXiRaN
Orders Execution
It Closes Orders by itself It automatically opens orders when conditions are reachedChecks for the total of open ordersIt can change open orders parameters, due to possible stepping strategy
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 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¹Q‹8R.EøTöN÷}.;Y–Vƒ(•µÉ·Mþ!•ñRá酏Ìð£</hIôQŽ®nLeu}7àæŠšÍ¥#»´¿¡¼N‚,kKÈɺ0ÄB—ŒŒróó
ø–D”¤÷¤Šóý7¥ b®ûãù¤ïš(Ž(Ë_¹jêZ㘶¢
@ê„bÖµ-ãÊvžMât÷ÎËýŽ“Êo¸8ÿüõ¸Fî×ҋ£ªk™{¸;¥ø_`§ÞrPuè¡Æ½Þy˜²<«Q«z!G"o¿þ‹PÍ7žé€ðüÇÍG)9‡y”~FEU`Õײ‡9n(ùQș𮲒Ï'£KVËÍy¥¹Ò‹—x¢7èv88š‡¨ü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çä—N”YJÐ_ñMÞNüÌc©M9¦FۅÎl{=7	[U‡‚b';"z¡²kÕ6ŸvÏ×)`öï¹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ç³áÈ;n2„‡Cž45tڃÄÏÁVED~ëø(§E_Oë1=2_»·yñÍMYÜ;dˆœGhë*Oª›]<ºœ[W7·Û89ÅJn¶xrQ_”-õHãwgM’b¨1bÓÖ*Úö=8?÷ Õ>‘OçÜɐrüÞu¯H.õr»¸Va×²P¾sRëWˆÛÍ~ZÈv

½Ã¿ë/z•”}‚ò}UÛÙ=Æ=z—t¦Ç£‡!ùˆ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ÿïú¯ü?4—Sd–2mŒ¶Òö?RЍ6²¶¨Ë,#ªËÖÒ·iR|´-XÏM0ⲘWì:£¥]rrÁà¥Y#¤Z›R䐎V?æ/ÒދƳQîÓ{¾Ó_ÙÁMg:®Ý>ÿÇvû=?±óñøµÇMânÏN—ŠGbqf-niáê/v¯À/ǐ³\<3©'Eé$—ºÄÍóIÕÙô6\’Ä—Œ|œX%Á‘ÑÛÎ]/!ˆÀ×]Âð·î¾,iŠ$!_@~W©sº)ÎU«>Ûá°Çj¹5œÁÏá‹äYQ©¢€VÔéwV³
[˜­!_¬ø¨àV´d¤C2ÐÙǁ`x~ÚZ„£éþ0࣑q€TÄ Ë¼¶‰¬A‘ø§„c43Œ
tžmD"SÈmNj%”þ뼘Gâ»­ÎÓºUN’õP’sø{Žà	é‰
Û걗µRëqÀ-©Y—«%Y	µ˜ƒwWQ 	—K¤bÅí­±éNœì_<_×<e##¦)Ø¶i")p‡zçºÇNä­ñ$¾ú]ˆ£-Ìêwe@ôùMá³}wÂ
^Xè:Ͳeת_º–—“üÈ?ú÷Û}³ú£¥pêÙäwu†íiw¥î‡V¤¹…j9>»\¥7w¬Büáç–7Réwuë³­K<H%r1’çŽ\™„×këÝnL¸Ö¦"y¬>ÇáÞâûÑӓޔoצf;›¤äRBNQÔê?U”}øÄ\¬ö¼íÿ÷¤-Ì&‡Ìm·°Aɺì\X©JKS½@т224ŒºøU¼]ȅØEÎ_|nYëŠÁn;çrQiñÎ锨ڦQ_‰Ý?8b-«öBÙòúÕa֖›¯FœõÛ,çv›ÏÖ=!¼˜eôä.ê™[öm;"•}£Mî…ÜqœgéßÊÊ2G†²
ð—;ăÞw­äÛ‹0»Œ•äÒ
SN°ÜŠZʍdäëC2ïkӇŒ;ž[Lڒyj;6j¦D*,W¯8­ê:îЅ,׫I¸J_*îq*¤Dõâ×;±>XAáø
³x
êXa9[Û!Ðô}ÌÛI‡+ˆ£n×û³žºmÍ|…m(¯¬á++Œ=ô>iÌE¡ž¦}µëï?!Ý~g"ÌrÚ1îhÙï,5dæwGØNpµ|nDx*]e{‡£õèÖkZÇømT­8!$:æE‰O3áMs=¨§Ç™æ•6~z9,P‘N—Ulú®»˜sÕJþ²Iëlþ<¿[қ|½Çiósçäöçzc[ñÛ#DM²'gnm>(ÔOu“ÌÆFÉ֘¤„ízUdÞ¥·k$6(2Iæ	Õöîa߽ΎšÂ¤N^*®`™dnC& tãÔf¶¥wÎõNj	mþpj‹÷Ž¥	åTÐçÒø°Åˆ‡œ{-c;	‹sk·AÆÝ™»»‚0wswñ….Ý
'^Í4ü¹ï«ÇHè|Oi“ÐåÞ:ü^Äá#?%klÙØü§Áž±÷|¿XïÉøy°~„Û½¢mX¦–•·9Q窭Û%í«¡‡
—nFß^(IK‡I_úm'Ø/+«\>¢u¿˜}#›Sæ'¯ó‡¹ iÞ4v‘sü¹ˆƒÝ˜×}²sWä2ÈRŽr‹ðÆ&þ„¡F¿ˆú¬]QgØÙÛݖ¾D#`Ø"¬!Õ
®à­TæÖ{oš¥“[wΙß1>"’|U#ÓØCýTrƒ#¶¸¾û#ü묏Ç[.ÊR8|v³Çóüáwr‹îg»ç„aæ9?Íé75›wÅ·i¼ûñô£ßµž໣ô´êØÌ«Ç€—“xzÀz¯£ÎC­¦
û‘ñES}'NüX\wÇÄ1áQ·ù”pu¸Soì'f@gßøJ•s÷AÈÖ´6”0y&ÒˆúñbH.Gë‹{O$.èÙþg_¶Ý¸AzüY³ŒÏØà`^zš¬î¶>àNw>À/}ëqÜ}‚Q@ AÝ]‚:šˆ¤%PË4?÷Ö´J'p‘“8tïÙ7—Âó
ð¢fÕ-HÚíF¨?ηVú>Ë=I\ªH4¢L£¥¤y|ŒQÙ^0ÀÁ8¹s@ô¤w‹1ùKJ+J½pÕ )¾r£›XÎß¡vãx¸Dì‚ÕYwª¹—d?}´Ún¯ââ_÷HgÂœbµ´)O*€ç³¨÷ñ

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