//+------------------------------------------------------------------+
//|                                                  RelStrength.mq4 |
//|                                                         by Matsu |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 Green
#property indicator_color2 Red
#property indicator_color3 Gold
#property indicator_color4 DodgerBlue
#property indicator_color5 Silver
#property indicator_color6 Cyan

#property indicator_level1 0

extern int CountBars=50;
extern bool Reverse=false;

//---- buffers
double val1[];
double val2[];
double val3[];
double val4[];
double val5[];
double val6[];

int deinit()
  {

  return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {

//---- indicator line
   IndicatorBuffers(6);
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexStyle(1,DRAW_LINE,0,1);
   SetIndexStyle(2,DRAW_LINE,0,1);
   SetIndexStyle(3,DRAW_LINE,0,1);
   SetIndexStyle(4,DRAW_LINE,0,1);
   SetIndexStyle(5,DRAW_LINE,0,1);
   SetIndexBuffer(0,val1);
   SetIndexBuffer(1,val2);
   SetIndexBuffer(2,val3);
   SetIndexBuffer(3,val4);
   SetIndexBuffer(4,val5);
   SetIndexBuffer(5,val6);
   
   SetIndexLabel(0,"USD");
   SetIndexLabel(1,"GBP");
   SetIndexLabel(2,"JPY");
   SetIndexLabel(3,"AUD");
   SetIndexLabel(4,"CAD");
   SetIndexLabel(5,"CHF");

   IndicatorShortName("RS(USD,GBP,JPY,AUD,CAD,CHF vs EUR)");
   IndicatorDigits(2);



//----
   return(0);
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
int start()
  {   
   if (CountBars>=Bars) CountBars=Bars;
   int i,shift,counted_bars=IndicatorCounted();
   double price1,price2,price3,price4,price5,price6;
//----
   if(Bars<=1) return(0);


price1=iMA("EURUSD",0,1,0,MODE_SMA,PRICE_CLOSE,CountBars);
price2=iMA("EURGBP",0,1,0,MODE_SMA,PRICE_CLOSE,CountBars);
price3=iMA("EURJPY",0,1,0,MODE_SMA,PRICE_CLOSE,CountBars);
price4=iMA("EURAUD",0,1,0,MODE_SMA,PRICE_CLOSE,CountBars);
price5=iMA("EURCAD",0,1,0,MODE_SMA,PRICE_CLOSE,CountBars);
price6=iMA("EURCHF",0,1,0,MODE_SMA,PRICE_CLOSE,CountBars);

if (Reverse)
{

   for (shift = CountBars; shift>=0; shift--) 
   { 
		val1[shift]= (iMA("EURUSD",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price1 -1) *100;
		val2[shift]= (iMA("EURGBP",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price2 -1) *100;
		val3[shift]= (iMA("EURJPY",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price3 -1) *100;
		val4[shift]= (iMA("EURAUD",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price4 -1) *100;
		val5[shift]= (iMA("EURCAD",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price5 -1) *100;
		val6[shift]= (iMA("EURCHF",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price6 -1) *100;
   }
   
}
else
{

   for (shift = CountBars; shift>=0; shift--) 
   { 
   	val1[shift]= (1-iMA("EURUSD",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price1) *100;
		val2[shift]= (1-iMA("EURGBP",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price2) *100;
		val3[shift]= (1-iMA("EURJPY",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price3) *100;
		val4[shift]= (1-iMA("EURAUD",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price4) *100;
		val5[shift]= (1-iMA("EURCAD",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price5) *100;
		val6[shift]= (1-iMA("EURCHF",0,1,0,MODE_SMA,PRICE_CLOSE,shift)/price6) *100;
   }
   
}
   return(0);
  }
//+------------------------------------------------------------------+