dex_RSIndex





//+------------------------------------------------------------------+
//|                                                  dex_RSIndex.mq4 |
//|                                        Copyright © 2006, akadex. |
//|                                                           tohell |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2006, akadex"
#property link      "tohell"

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Aqua
#property indicator_level1 30
#property indicator_level2 50
#property indicator_level3 70
#property indicator_width1 2
#property indicator_minimum 0
#property indicator_maximum 100

//---- input parameters
extern string Çíà÷åíèÿ_âàëþò="0=USD 1=GBP 2=EUR 3=CHF 4=JPY";
extern int ShowCurrency=0;
extern int ShowCurrency1=2;
extern int RSIPeriod=12;
extern int Smooth=12;
extern int NumberBars = 1000;
extern int Shift  = 0; 

//---- buffers
double IndexBuffer[],Buffer[],Buffers[],RSIBuffer[];
double IndexBuffer1[],Buffer1[],Buffers1[],RSIBuffer1[];
double positive,negative,rel,positive1,negative1,rel1,RSI,RSI1,SRSI,SRSI1;
int PhaseRSI=-100;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {

//---- indicator line
   IndicatorBuffers(8);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,RSIBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,RSIBuffer1);
   SetIndexBuffer(2,IndexBuffer);
   SetIndexBuffer(3,IndexBuffer1);
   SetIndexBuffer(4,Buffer);
   SetIndexBuffer(5,Buffer1);
   SetIndexBuffer(6,Buffers);
   SetIndexBuffer(7,Buffers1);
   IndicatorShortName("dex_RSIndex (Ïåðèîä RSI="+RSIPeriod+"  Ñãëàæèâàíèå="+Smooth+")");
   SetIndexLabel(0,"Ïåðâàÿ âàëþòà");
   SetIndexLabel(1,"Âòîðàÿ âàëþòà");
   SetIndexDrawBegin(0,NumberBars);
   SetIndexDrawBegin(1,NumberBars);
   SetIndexShift (0, Shift);
   SetIndexShift (1, Shift);
//----
if (ShowCurrency<0 || ShowCurrency>4 || ShowCurrency1<0 || ShowCurrency1>4)
   {    Comment ("Íîìåð âàëþòû äîëæåí áûòü >0 è <5");    return(-1); }
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
double USD, GBP, EUR, CHF, JPY;
double Data1,Data2,Data3,Data4;
   int i;
   for(i=NumberBars-1;i>=0;i--)
{
Data1=iClose("GBPUSD",0,i);
Data2=iClose("USDCHF",0,i);
Data3=iClose("EURUSD",0,i);
Data4=iClose("USDJPY",0,i);
USD = MathPow((0.036*Data2)*(0.136*Data4)/(0.119*Data1)/(0.576*Data3),0.2); 
GBP = Data1 * USD; 
EUR = Data3 * USD; 
CHF = USD / Data2; 
JPY = USD / Data4; 

switch (ShowCurrency) 
   {
   case 0: IndexBuffer[i]=USD; break;
   case 1: IndexBuffer[i]=GBP; break;
   case 2: IndexBuffer[i]=EUR; break;
   case 3: IndexBuffer[i]=CHF; break;
   case 4: IndexBuffer[i]=JPY; break;
   }
switch (ShowCurrency1) 
   {
   case 0: IndexBuffer1[i]=USD; break;
   case 1: IndexBuffer1[i]=GBP; break;
   case 2: IndexBuffer1[i]=EUR; break;
   case 3: IndexBuffer1[i]=CHF; break;
   case 4: IndexBuffer1[i]=JPY; break;
   }     

}
for(i=NumberBars-1;i>=0;i--)  
   {
   Buffer[i]=iRSIOnArray(IndexBuffer,0,RSIPeriod,i);
   Buffer1[i]=iRSIOnArray(IndexBuffer1,0,RSIPeriod,i);
   }
for(i=NumberBars-1;i>=0;i--)  
   {
   RSIBuffer[i]=iMAOnArray(Buffer,0,Smooth,0,MODE_EMA,i);
   RSIBuffer1[i]=iMAOnArray(Buffer1,0,Smooth,0,MODE_EMA,i);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+






Sample





Analysis



Market Information Used:

Series array that contains close prices for each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:

Relative strength index
Moving average indicator


Custom Indicators Used:

Order Management characteristics:

Other Features: