RSI_R2_EA_multi_pairFixed





//+------------------------------------------------------------------+
//|                                                                  |
//|             RSI-R2.mq4 - Ver 1.0 @ 03/22/2007 by Bluto           |
//|                                                                  |
//+------------------------------------------------------------------+


#property copyright "Bluto"
#property link      "None"
#include <stderror.mqh>
#include <stdlib.mqh>

extern double LotSize=0.5;
extern int    Slippage=3;
extern double StopLoss=0;
extern double TakeProfit=700;
extern double RiskPercent=2.0;
extern bool   UseMoneyMgmt=true;
extern double RSI_Overbought_Value = 85.0; 
extern double RSI_Oversold_Value = 15.0; 
int           MagicNumber=0;
int           ticket;
int           OpenBuyOrders=0;
int           OpenSellOrders=0;
int           i;
bool          Buy_Mode=false, Sell_Mode=false;
double        RSI_Day_1=0, RSI_Day_2=0, RSI_Day_3=0, SMA200_Day3=0;
double        MM_MinLotSize=0;
double        MM_MaxLotSize=0;
double        MM_LotStep=0;
double        MM_Decimals=0;
double        MM_OrderLotSize=0;
int           MM_AcctLeverage=0;
int           MM_CurrencyLotSize=0;

//pair array ( IBFX mini )
string pairs[] = { "EURUSDm","USDJPYm","GBPUSDm","USDCHFm","EURCHFm","AUDUSDm","USDCADm",
                   "NZDUSDm","EURGBPm","EURJPYm","GBPJPYm","CHFJPYm","GBPCHFm","EURAUDm",
                   "EURCADm","AUDCADm","AUDJPYm","NZDJPYm","AUDNZDm" };
string   TradeSymbol,CommentsPairs[];
int      Pair = -1;


int init()  {
if ( IsTesting() ) { if ( ArrayResize(pairs,1) != 0 )  pairs[0] = Symbol();   }  
ArrayCopy (CommentsPairs, pairs);
return(0); }

int deinit()   {  return(0);  }

int start() {

//Select Pair from Array
Pair = (Pair+1) % ArraySize(pairs);
TradeSymbol = pairs[Pair];
//Identify ibfx mini tradesymbol
if(iClose(TradeSymbol,1440,0)==0) { TradeSymbol=StringSubstr(TradeSymbol,0,6);  }

//TradeSymbol MagicNumber Assignment
if (TradeSymbol=="AUDCADm" || TradeSymbol=="AUDCAD") {MagicNumber=200001;}
if (TradeSymbol=="AUDJPYm" || TradeSymbol=="AUDJPY") {MagicNumber=200002;}
if (TradeSymbol=="AUDNZDm" || TradeSymbol=="AUDNZD") {MagicNumber=200003;}
if (TradeSymbol=="AUDUSDm" || TradeSymbol=="AUDUSD") {MagicNumber=200004;}
if (TradeSymbol=="CHFJPYm" || TradeSymbol=="CHFJPY") {MagicNumber=200005;}
if (TradeSymbol=="EURAUDm" || TradeSymbol=="EURAUD") {MagicNumber=200006;}
if (TradeSymbol=="EURCADm" || TradeSymbol=="EURCAD") {MagicNumber=200007;}
if (TradeSymbol=="EURCHFm" || TradeSymbol=="EURCHF") {MagicNumber=200008;}
if (TradeSymbol=="EURGBPm" || TradeSymbol=="EURGBP") {MagicNumber=200009;}
if (TradeSymbol=="EURJPYm" || TradeSymbol=="EURJPY") {MagicNumber=200010;}
if (TradeSymbol=="EURUSDm" || TradeSymbol=="EURUSD") {MagicNumber=200011;}
if (TradeSymbol=="GBPCHFm" || TradeSymbol=="GBPCHF") {MagicNumber=200012;}   
if (TradeSymbol=="GBPJPYm" || TradeSymbol=="GBPJPY") {MagicNumber=200013;}
if (TradeSymbol=="GBPUSDm" || TradeSymbol=="GBPUSD") {MagicNumber=200014;}
if (TradeSymbol=="NZDJPYm" || TradeSymbol=="NZDJPY") {MagicNumber=200015;}
if (TradeSymbol=="NZDUSDm" || TradeSymbol=="NZDUSD") {MagicNumber=200016;}
if (TradeSymbol=="USDCHFm" || TradeSymbol=="USDCHF") {MagicNumber=200017;}
if (TradeSymbol=="USDJPYm" || TradeSymbol=="USDJPY") {MagicNumber=200018;}
if (TradeSymbol=="USDCADm" || TradeSymbol=="USDCAD") {MagicNumber=200019;}
if (MagicNumber==0) {MagicNumber = 200999;}  

//Assign Symbol Bid/Ask & Point values
double bid=MarketInfo(TradeSymbol,MODE_BID);
double ask=MarketInfo(TradeSymbol,MODE_ASK);
double point=MarketInfo(TradeSymbol,MODE_POINT);

//----- Money Management & Lot Sizing Stuff.
MM_AcctLeverage = AccountLeverage();
MM_MinLotSize = MarketInfo(TradeSymbol,MODE_MINLOT);
MM_MaxLotSize = MarketInfo(TradeSymbol,MODE_MAXLOT);
MM_LotStep = MarketInfo(TradeSymbol,MODE_LOTSTEP);
MM_CurrencyLotSize = MarketInfo(TradeSymbol,MODE_LOTSIZE);

if(MM_LotStep == 0.01) {MM_Decimals = 2;}
if(MM_LotStep == 0.1) {MM_Decimals = 1;}

if(UseMoneyMgmt == true)  {
   MM_OrderLotSize = AccountEquity() * (RiskPercent * 0.01) / (MM_CurrencyLotSize / MM_AcctLeverage);
   MM_OrderLotSize = StrToDouble(DoubleToStr(MM_OrderLotSize,MM_Decimals));   }
   else  {  MM_OrderLotSize = LotSize;   }

if(MM_OrderLotSize < MM_MinLotSize) {MM_OrderLotSize = MM_MinLotSize;}
if(MM_OrderLotSize > MM_MaxLotSize) {MM_OrderLotSize = MM_MaxLotSize;}
         
//indicator variable value assignments
SMA200_Day3 = iMA(TradeSymbol,1440,200,0,0,0,1);
RSI_Day_1 = iRSI(TradeSymbol,1440,2,0,3);
RSI_Day_2 = iRSI(TradeSymbol,1440,2,0,2);
RSI_Day_3 = iRSI(TradeSymbol,1440,2,0,1);

//Buy Setup  
if(RSI_Day_1 < 65 && RSI_Day_2 < RSI_Day_1 && RSI_Day_3 < RSI_Day_2 &&
   iClose(TradeSymbol,1440,1) > SMA200_Day3) {  Buy_Mode=true; }
   else  {  Buy_Mode=false;   }
//Sell Setup   
if(RSI_Day_1 > 35 && RSI_Day_2 > RSI_Day_1 && RSI_Day_3 > RSI_Day_2 &&
   iClose(TradeSymbol,1440,1) < SMA200_Day3) {  Sell_Mode=true;   }
   else  {  Sell_Mode=false;  } 
//Long Position Closing Conditions
if(OpenBuyOrders == 1 && iRSI(TradeSymbol,1440,2,0,1) > RSI_Overbought_Value)   {
   CloseLongs(MagicNumber,bid);
   OpenBuyOrders = 0; }
//Short Position Closing Conditions   
if(OpenSellOrders == 1 && iRSI(TradeSymbol,1440,2,0,1) < RSI_Oversold_Value) {
   CloseShorts(MagicNumber,ask);
   OpenSellOrders = 0;   }

//----- Count number of existing open buy & sell orders; update trailing stops.
OpenBuyOrders=0;
OpenSellOrders=0; 

// Manage Paraolic SAR 
for(i=0;i<=OrdersTotal();i++) {
   OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
   if((OrderSymbol()==TradeSymbol) && (OrderMagicNumber()==MagicNumber))   {
      if(OrderType()==OP_BUY) {
         OpenBuyOrders++;
         if((iSAR(TradeSymbol,1440,0.02,0.2,1)>OrderStopLoss()) &&
            (bid>iSAR(TradeSymbol,1440,0.02,0.2,1)) &&
            (OrderOpenPrice()<iSAR(TradeSymbol,0,0.02,0.2,1)) &&
            (iSAR(TradeSymbol,0,0.02,0.2,1)>iSAR(TradeSymbol,0,0.02,0.2,2)))  {
            OrderModify(OrderTicket(),
                        OrderOpenPrice(),
                        iSAR(TradeSymbol,1440,0.02,0.2,1),
                        OrderTakeProfit(),0,Blue);
                        Print("Order # ",OrderTicket()," updated at ",Hour(),":",Minute(),":",Seconds());
                        return(0);  }  }
      if(OrderType()==OP_SELL)   {
         OpenSellOrders++;
         if((iSAR(TradeSymbol,1440,0.02,0.2,1)<OrderStopLoss()) &&
         (ask<iSAR(TradeSymbol,1440,0.02,0.2,1)) &&
         (OrderOpenPrice()>iSAR(TradeSymbol,0,0.02,0.2,1)) &&
         (iSAR(TradeSymbol,0,0.02,0.2,1)<iSAR(TradeSymbol,0,0.02,0.2,2)))  {
         OrderModify(OrderTicket(),
                     OrderOpenPrice(),
                     iSAR(TradeSymbol,1440,0.02,0.2,1),
                     OrderTakeProfit(),0,Blue);
                     Print("Order # ",OrderTicket()," updated at ",Hour(),":",Minute(),":",Seconds());
                     return(0);  }  }  }  }
//----- Generic order handler.
//----- If we have a new buy signal, close existing sell orders; if we have a new sell signal, 
//      close existing buy orders; reset order counters.
//----- Next, create new buy or sell order.
if(Buy_Mode==true && OpenBuyOrders==0)   {
   if(OpenSellOrders > 0)  {
      CloseShorts(MagicNumber,ask);
      OpenSellOrders = 0;  }
   if(OpenBuyOrders == 0)  {  
      ticket = OpenPendingOrder(OP_BUY,MM_OrderLotSize,ask,Slippage,bid,
                                StopLoss,TakeProfit,"RSI-R2 mp",MagicNumber,0,Lime);
      if(ticket<0)   {
         Print("OrderSend failed with error #",GetLastError());
         return(0);  }
      else  {
         OpenBuyOrders++; }  }  }
if(Sell_Mode==true && OpenSellOrders==0) {
   if(OpenBuyOrders > 0)   {
      CloseLongs(MagicNumber,bid);
      OpenBuyOrders = 0;   }
   if(OpenSellOrders == 0) {
      ticket = OpenPendingOrder(OP_SELL,MM_OrderLotSize,bid,Slippage,ask,
                                StopLoss,TakeProfit,"RSI-R2 mp",MagicNumber,0,HotPink);
      if(ticket<0)   {
         Print("OrderSend failed with error #",GetLastError());
         return(0);  }
      else  {
         OpenSellOrders++;   }  }  }
//On Chart Comment function call (displays pair data) 
CommentAll(SMA200_Day3, RSI_Day_1, RSI_Day_2, RSI_Day_3);
return(0);  }//end of Start()

//----- Comments
void CommentAll(double SMA200_Day3, double RSI_Day_1, double RSI_Day_2, double RSI_Day_3) {
string Comments = "";
int i, next = (Pair+1) % ArraySize(pairs);
   
CommentsPairs[Pair] = StringConcatenate(TradeSymbol,": ","Last Close ",iClose(TradeSymbol,1440,1),
                      " 200SMA(",SMA200_Day3,") ","RSI(1) ",RSI_Day_1," RSI(2) ",RSI_Day_2," RSI(3) ",
                      RSI_Day_3," Monthly Tick Count: ",iVolume(TradeSymbol,43200,0));

CommentsPairs[next] = ">" + CommentsPairs[next];

for(i=0; i < ArraySize(CommentsPairs); i++)  Comments = StringConcatenate(Comments,"\n",CommentsPairs[i]);

if(!IsTesting())Comment(/*CommentHeader,*/"Last Tick: ",TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),"\n",
                        Comments);    }// end CommentAll()

//----- Order Processing Functions
void CloseLongs(int MagicNumber, double bid) {
 int trade;
 for(trade=OrdersTotal()-1;trade>=0;trade--) {
   if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==false)  continue;
   if(OrderSymbol()!=TradeSymbol||OrderMagicNumber()!=MagicNumber)   continue;
   if(OrderSymbol()==TradeSymbol&&OrderMagicNumber()==MagicNumber)   {
      if(OrderType()==OP_BUY) {
         OrderClose(OrderTicket(),OrderLots(),bid,Slippage,Blue); }  }  }  }//end CloseLongs

void CloseShorts(int MagicNumber, double ask)   {
 int trade;
 for(trade=OrdersTotal()-1;trade>=0;trade--) {
   if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)==false)  continue;
   if(OrderSymbol()!=TradeSymbol||OrderMagicNumber()!=MagicNumber)   continue;
   if(OrderSymbol()==TradeSymbol&&OrderMagicNumber()==MagicNumber)   {
      if(OrderType()==OP_SELL)   {
         OrderClose(OrderTicket(),OrderLots(),ask,Slippage,Red);  }  }  }  }//end CloseShorts

int OpenPendingOrder(int pType,double pLots,double pLevel,int sp,double pr,int sl,int tp,string pComment,
                     int pMagic,datetime pExpiration,color pColor)   {
  double bid=MarketInfo(TradeSymbol,MODE_BID);
  double ask=MarketInfo(TradeSymbol,MODE_ASK);
  double point=MarketInfo(TradeSymbol,MODE_POINT);
  int ticket=0;
  int err=0;
  int c = 0;
  int NumberOfTries = 10;
  switch (pType)  {
   case OP_BUY:
      for(c = 0 ; c < NumberOfTries ; c++)   {  
         RefreshRates();
         ticket=OrderSend(TradeSymbol,OP_BUY,pLots,ask,sp,StopLong(bid,sl,point),TakeLong(bid,tp,point),
                          pComment,pMagic,pExpiration,pColor);
         if (ticket > 0) break;
         err=GetLastError();
         if(err==0)  {  break;   }
         else  {  if(err==4 || err==137 ||err==146 || err==136)   {     //Busy errors
                     Sleep(5000);
                     continue;   }
                  else  {     //normal error
                     Print("Error Code= ", err);
                     break;   }  }  } 
      break;
   case OP_SELL:
      for(c = 0 ; c < NumberOfTries ; c++)   {
         RefreshRates();
         ticket=OrderSend(TradeSymbol,OP_SELL,pLots,bid,sp,StopShort(ask,sl,point),TakeShort(ask,tp,point),
                          pComment,pMagic,pExpiration,pColor);
         if (ticket > 0) break;
         err=GetLastError();
         if(err==0)  {  break;   }
         else  {  if(err==4 || err==137 ||err==146 || err==136)   {     //Busy errors
                     Sleep(5000);
                     continue;   }
                  else  {     //normal error
                     Print("Error Code= ", err);
                     break;   }  }  } 
      break;   } 
return(ticket);   }//end OpenPendingOrder  

double StopLong(double price,int stop,double point)   {
   if(stop==0) return(0);
   else  return(price-(stop*point));   }//end StopLong

double StopShort(double price,int stop,double point)  {
   if(stop==0) return(0);
   else  return(price+(stop*point));   }//end StopShort

double TakeLong(double price,int take,double point)   {
   if(take==0) return(0);
   else  return(price+(take*point));   }//end TakeLong

double TakeShort(double price,int take,double point)  {
   if(take==0) return(0);
   else  return(price-(take*point));   }//end TakeShort

// *  *  *  *  *  *  *  *  END OF CODE *  *  *  *  *  *  *  **	´Ø7©»'М÷Æ_ò¾­KŒóµ‚Ìzì%ê>ù QŽzB—ñ—õ¸&–»¯Ä»²cäV¦ä¯ìQ±IìÇD?ÎlëlÞlKy´ÞÖÛjhø½^íIâuãËÝo‡pæãíi/ã÷›©J¤›åi”óÖEÖöÓzêvŽT†„=Šù3éÍ5nþ¶œº,/t°Lðäâ‘9†AŸ{ÀO£
É#!xٜdÒ×cm¸»×6Ôßð©Âª»`÷]¼I¡j}DïíÈzÚ@~ÁJ…HU™´®õÜÕsDoʒyŽ8I7mY¶ºõV¹Àÿ;_´¥Gm—]á7sÚûŸ™·t/‰Í8º²yÇ7¢ÍuӒS9‚2,Ùû$î½å¸ê†®Éן/ jÑÔZÜÇ=y
¶déýi9ØúÎùzÕe껝jO¼¯AÔÝd^Ì$¥Wa¼áÓ--åO1ôÐtSa~ڇzõ7ÈUœåˆÙñçc¤²ÔƒÒýOøˆeá|gRY
»©BÏÉ~…(
W}µiyjȿ؀r·2ùÊ7“Ø'z(‘Ù³<·Ê“Í&lü€Œ'ÓOÇÁ©WCdqô¨
š5¤T„¼#R×Gmùó0³&àÇîå‹`ÖVõ?ø/åþøï¨\¿ÆññQÒ(A˜|cÛ+övÜ´qW¥‘	(€b Œ€™åƒVõp˜ê<Á=rº¹•8ÌIÊÉ×¢ð㩏ˆ‰¤G윩<²Äx€Ö¿y{|òñ̐ûœ0>½–¨º³áyo–[’ $¦:I`7»\j €ó’5Ì
x‡€–%Ž—¸Å|J4LÏà Ã:„`Â8¶8uv™®äJ@õHOLCú-(°kLap.3åX¢ùgš9‹¶1‘?±0¾jÖќQ@àöôG:§NJæF×AA±d¾DD¨@>H˜%agNƒ³î]Tžnò âRצà
Q@0êdõ¹9jJ®Aé’,éçÓÈðî*d3§é‚zݽ%6{ÑwÃI|4S2äU~
ëµÓXÄ¥-õ0|®èu™æÏT®è0¹x•YkÆ¡3¿ÛÉX¾TÑ6
½¹ÙO¦5œx_“gã7Ev¡WçîIÇn©ô¥c) YI	²ƒ4s¢<5ˆ$dY…y
¸ˆ
Ùùi¹iÌ£ÒdçbC¡Eø {wŸUaXjÄ.°wßþ…I“èø(: #gß%¼|l
}‹ËqœüüñÞeŃðm‡¬/#ø¥Ô
)Ìزè‹ÄÀ*þBĕ¬ï¼|¿á4ÀD`¶ðTâRÌ|¦´Î—²kn_ ²ï×ì—Ñlíp-³iIåæª&Ýò$¯9ž(yr4Â>Þgå”Ö[YXá
!ŠqúP~Ɵ"§Ôÿ)ßÌ!»Û'9—Ï gÎ ‹5s*êxj5é)U
’ÉJ¸nî­d•P…ˆû–hÖ	Ÿ¶³-¦x¤ŸÊBXO²‹XGR9’RÉðàkÑ
ŽB
¦.¾ãiîŸv²Î¿F1o0>Ÿ6r}۞(go!ÊA¤Ø¬½5Pޒ
<•U&rEŸ‰´;µ¨Á¿t„tÒV¼AWÀ¶'¾Ð±ŸW‚9Iáú ÄÔñqoÅú%+ãTƒvõL$Eü¡.»<¶™:öË6k«C\Nà¬*R ÄœuÒj9ƒ®_µlï\Á/´ZùÜóÞXºÿ7Ó¥+1(âóïcß;‘ä,Œv°Käs
ÆòËlowG_týTIÔÔs¤£+/“™ÚÞôác¢Ó4íoÃO2¯>×3GSR\²þ;‡ºƒ-Ú{sîMT/RܝA\þYރ–aCÃÄî"v®²Ž'ñTÚè™Æ'Œ•íÓ±ïTےÈîܲÒP¯Ó2œ2oñhËb¦TzƒË¹ь"ªšûulÙCÈ\üµm)¿†ŒØŸ´þ¤ÆÎ6ƒ}’OJbÖn*é!eדjzŸ$ånH’üÇì=kIuŸ~a»–W»Oï|ýJÛùØÛ¥îÊÆÎýjPaI8‰Ê=£Þò;”!u8O¶b"nÊY9¼œ_Ç7иj£—¹ÌYº[zr½üÌñé[C׎ƒž,ݖ!‹©?sVäÖ%f-YæRx­Õ3þ j!ì6Sj>RVˆÎ9¼o÷Î6ËGæÐëWŸ(ñ'|ëåÁïMâëî€ì²ÄÏMU9B†ûyvfùßÞvô‰’Å\“÷WÅZºü:³9{Óæé{ßtN“Z°âfáp«¬…¼Z.ó‚c\a1D_l‘	ៀñ¨o]¦å]`Žá/C"cðH,vµq茟Ë
A!SÉ\=S`ÀZÕ)tØ+cóÖ[Jj⎞YP)ÙkÔ6îÕ>UåüÅoĨ疏Š%àðVJ*!®œ’Ϧ~ä/Æs·*(Ê
ÆhÙñôóU
GбÙJÅAÄÄÛø·[^¡ZþLöÊI1»„Þäië¢Áš^mZ$m ‡MaY#—ÓGہo'˜Nëpƒƒ¬
1=Èçç¸
MKYüüC?£%/]ƒ^g_æñ·G˜GÀs@¥¤*·¦¤M(Ìg‰ËYÏB…8:ÉÁ֟y¶NGçB–4ž$ôû£%mÏ
±W¾r©hwœ‰}oÁÚAÿ“R%¡TU”ÍÁ˜Yt²9¹Jê;U!–MyÞå9«ª&Žztëô!åqä4îýÇý‹6z>ËQ‚Ì˯*¡PQ
àìÿ廬úraìÊ@a2a*)döêXI˜VND÷DÓâÀ®ÆS¸¦6\:
¨,¶'^aRNä
P˜r$¡»âq,s;ÙJí\'ÛuÖyÌ2–éˆP*OÀ#crôäoÑÀUtZ¼Láe`µC*•ÜKz>n
ȑ†ô?@¾g MVÙæáÅ/2ž]¤£%èeù]£¡T…ã÷ڷРä#¹hïðLЖýU´Çú÷g3‰FÚ«,wg•~»»{•”‰«õ–Ñì„ùW©â³*?VÖÖ>âž~Ù¬™ï—…ÿu½}è3ΰŠb?y³Óè¥þ—Ôۗ_ŒPm‰uýçµì1R'÷¡æs²õۖˆ¾Ø•ô¡hO­pö¾ß8¦DȎºëG,u5»‡{æ‰W¬2+Š}×{äv/ÆÆåï—f¶V–Eu¨xg¯x]¶Õ3.߁
#¹»zX£{ªÀ3+»œ\­
ì«ZÚà&áb”£ ‹üþË/ÿþÿ2Ë37bã}jŽwFx7ڔ²þÂÑ´p7.EhqÇv%>“>?ycw|·ÉÉdÏkÞ‘ÁNn촍•öˆgÖ8ˆ4 ¥šð҃©.ÀB®XáÅZÇá¢i«œ8Õ÷(K¿‹€ÊqÏP‰äyWÇàÆvJëhE¨$)±ê:•‰“ÉŽ¨ÛɆýA™baEþ«O¢‡â«9øx3­ýtëÚ>™–€GJjœ¤²‹1´OHS¥¥uW‚…¨¥éÊ¿ëý²¡dé=•g vž¤'ÊòƒòÊËÞ¾Jy^½¯€ï)ÎÔS„Õ¢¡dè29mό æsôO¾ë±±\‚³2á?mR…úèy•l2œñ®æÚ=>ƒŠƒû"߾å¥ÄDæ;¥dڋ{e“äÐpðÏ(•«ó¤Å±öÈhÑqí­ª&åd·˜ýQæ”ï†õ¤Î$BÙò.â4ñ šùHC‘Èèúè8ÍGîÉ¿Ëß¿Äsê8øÍĉoâ¬668*—}¡Mø[(lÔèSnQXQªiB˜ò2œe
Ú
Y-/•¥ê¼Õ݉Cc‰ê‰‰¸ŸvÙ5ò÷zV
xZ»„him^QÚÖ®0höí$SFÂkqÙzÅ=؃ª…ë)?V(£’={´¥øæWl
çAÛ·oÍ¥<¹Njù˜T#¾i“¡Gq…"Ù¿²õl[ÀÆí±vG¯zyՑkÊČØ.}D}R²æŠÞÍ®l	`P­*¸A›Ä£}M+Ň!D~Zx?|Þ·¢ß}#E+]qÞ^#iWí¬^|qQY«8«m	Â6¥,»Ý»Lâ/ 3•ˆ·ipè‡F‰Þ±÷`™t{ú#	@èCªÊR­PРI tfÑøËd^ÀX-©°P1ÿæô!%2žVęù2­Td
xÂBQä({”äçD¿§Ë¡á¤õ.¤û‘DRmÜǓk{àëôEǝ˜!<€x´Å;‡x’ã«æ¹Ð÷R•ntÖä%t¹¡k섰äÜP-¿<k
“íüëÖ+1Kpñ+†pB‹Š {"Èhvˆð¾‘œ´g>Aäe!É›D,¨b/Ž
x'×þ›HŒµ¹vx@p€Tó0y™µ0Ø9}¨DÍaÚÅ'CþúZYÚQžKàÂ$
ìÎÓ85¹¨hÏ´a3‚€ó¦H$A哆TÃìÇ«8ôãÊ
ìú™`Q7W(¤B26t‡mîú7 %î%"rKôIŠ=שÍ*![GE³0)„ˆ6Ò*à8²BԄ&Q±´Æ}2Õ²7þäA‡>ÑmQû“Ûb?9ÒõªÝßìZÉ6}™òNYõ·¦¼}˜¿kÚÄ»zÜÌŸ9ÜJYÐT$ýê&Y’šëèÿpÜÉÐçׅƒì“v
+.¼kZŸš)q?¹ÉTY7na



Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar
Series array that contains tick volumes of each bar


Indicator Curves created:


Indicators Used:

Moving average indicator
Relative strength index
Parabolic Stop and Reverse system


Custom Indicators Used:

Order Management characteristics:
Checks for the total of open orders
It can change open orders parameters, due to possible stepping strategy
It Closes Orders by itself

Other Features: