//+------------------------------------------------------------------+
//|                                                          RSI.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_separate_window
//#property indicator_minimum 0
//#property indicator_maximum 100
#property indicator_buffers 3
#property indicator_color1 DeepSkyBlue
#property indicator_color2 Orange
#property indicator_color3 Yellow
//---- input parameters
int RSIPeriod=14;
//---- buffers
double RSIBuffer[];
double PosBuffer[];
double NegBuffer[];
extern int tf=15;
extern int look_back= 0;
extern string long_basket= "enter 7 long symbols";
extern string long_basket1= "GBPUSDm";
extern double price1= 0;
extern string long_basket2= "EURGBPm";
extern double price2= 0;
extern string long_basket3= "GBPJPYm";
extern double price3= 0;
extern string long_basket4= "USDCHFm";
extern double price4= 0;
extern string long_basket5= "NZDUSDm";
extern double price5= 0;
extern string long_basket6= "AUDJPYm";
extern double price6= 0;
extern string long_basket7= "EURJPYm";
extern double price7= 0;

extern string short_basket= "enter 7 short symbols";
extern string short_basket1= "EURUSDm";
extern double price8= 0;
extern string short_basket2= "USDJPYm";
extern double price9= 0;
extern string short_basket3= "AUDUSDm";
extern double price10= 0;
extern string short_basket4= "NZDJPYm";
extern double price11= 0;
extern string short_basket5= "GBPCHFm";
extern double price12= 0;
extern string short_basket6= "CHFJPYm";
extern double price13= 0;
extern string short_basket7= "EURCHFm";
extern double price14= 0;
double GBPUSDm,EURGBPm,GBPJPYm,USDCHFm,NZDUSDm,AUDJPYm,EURJPYm;double EURUSDm,USDJPYm,AUDUSDm,NZDJPYm,GBPCHFm,CHFJPYm,EURCHFm;double GBPUSDm_now,EURGBPm_now,GBPJPYm_now,USDCHFm_now,NZDUSDm_now,AUDJPYm_now,EURJPYm_now;double EURUSDm_now,USDJPYm_now,AUDUSDm_now,NZDJPYm_now,GBPCHFm_now,CHFJPYm_now,EURCHFm_now;double GBPUSDm_pips,EURGBPm_pips,GBPJPYm_pips,USDCHFm_pips,NZDUSDm_pips,AUDJPYm_pips,EURJPYm_pips;double EURUSDm_pips,USDJPYm_pips,AUDUSDm_pips,NZDJPYm_pips,GBPCHFm_pips,CHFJPYm_pips,EURCHFm_pips;double highest_long_pips=0, highest_short_pips=0,long_pips, short_pips;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- 2 additional buffers are used for counting.
   IndicatorBuffers(3);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,PosBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,NegBuffer);
   
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,RSIBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="LongShortTotal";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   SetIndexDrawBegin(0,RSIPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Relative Strength Index                                          |
//+------------------------------------------------------------------+
int start()
  {
   int    i,counted_bars=IndicatorCounted();
   double rel,negative,positive;
//----
   if(Bars<=RSIPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=RSIPeriod;i++) RSIBuffer[Bars-i]=0.0;
//----
   i=Bars-RSIPeriod-1;
   if(counted_bars>=RSIPeriod) i=Bars-counted_bars-1;
   while(i>=0)
     {
     if (price1==0)GBPUSDm= iOpen(long_basket1, tf, look_back);else GBPUSDm=price1;
if (price2==0)EURGBPm= iOpen(long_basket2, tf, look_back);else EURGBPm=price2;
if (price3==0)GBPJPYm= iOpen(long_basket3, tf, look_back);else GBPJPYm=price3;
if (price4==0)USDCHFm= iOpen(long_basket4, tf, look_back);else USDCHFm=price4;
if (price5==0)NZDUSDm= iOpen(long_basket5, tf, look_back);else NZDUSDm=price5;
if (price6==0)AUDJPYm= iOpen(long_basket6, tf, look_back);else AUDJPYm=price6;
if (price7==0)EURJPYm= iOpen(long_basket7, tf, look_back);else EURJPYm=price7;
if (price8==0)EURUSDm= iOpen(short_basket1, tf, look_back);else EURUSDm=price8;
if (price9==0)USDJPYm= iOpen(short_basket2, tf, look_back);else USDJPYm=price9;
if (price10==0)AUDUSDm= iOpen(short_basket3, tf, look_back);else AUDUSDm=price10;
if (price11==0)NZDJPYm= iOpen(short_basket4, tf, look_back);else NZDJPYm=price11;
if (price12==0)GBPCHFm= iOpen(short_basket5, tf, look_back);else GBPCHFm=price12;
if (price13==0)CHFJPYm= iOpen(short_basket6, tf, look_back);else CHFJPYm=price13;
if (price14==0)EURCHFm= iOpen(short_basket7, tf, look_back);else EURCHFm=price14;
      GBPUSDm_now= iClose(long_basket1, 0, i);
EURGBPm_now= iClose(long_basket2, 0, i);
GBPJPYm_now= iClose(long_basket3, 0, i);
USDCHFm_now= iClose(long_basket4, 0, i);
NZDUSDm_now= iClose(long_basket5, 0, i);
AUDJPYm_now= iClose(long_basket6, 0, i);
EURJPYm_now= iClose(long_basket7, 0, i);
int    spread1=MarketInfo(long_basket1,MODE_SPREAD);
int    spread2=MarketInfo(long_basket2,MODE_SPREAD);
int    spread3=MarketInfo(long_basket3,MODE_SPREAD);
int    spread4=MarketInfo(long_basket4,MODE_SPREAD);
int    spread5=MarketInfo(long_basket5,MODE_SPREAD);
int    spread6=MarketInfo(long_basket6,MODE_SPREAD);
int    spread7=MarketInfo(long_basket7,MODE_SPREAD);
GBPUSDm_pips = (GBPUSDm_now-GBPUSDm)/MarketInfo(long_basket1,MODE_POINT)-spread1;
//GBPUSDm_pips = GBPUSDm_pips*MarketInfo(long_basket1,MODE_TICKVALUE);

EURGBPm_pips = (EURGBPm_now-EURGBPm)/MarketInfo(long_basket2,MODE_POINT)-spread2;
//EURGBPm_pips = EURGBPm_pips*MarketInfo(long_basket2,MODE_TICKVALUE);

GBPJPYm_pips = (GBPJPYm_now-GBPJPYm)/MarketInfo(long_basket3,MODE_POINT)-spread3;
//GBPJPYm_pips = GBPJPYm_pips*MarketInfo(long_basket3,MODE_TICKVALUE);

USDCHFm_pips = (USDCHFm_now-USDCHFm)/MarketInfo(long_basket4,MODE_POINT)-spread4;
//USDCHFm_pips = USDCHFm_pips*MarketInfo(long_basket4,MODE_TICKVALUE);

NZDUSDm_pips = (NZDUSDm_now-NZDUSDm)/MarketInfo(long_basket5,MODE_POINT)-spread5;
//NZDUSDm_pips = NZDUSDm_pips*MarketInfo(long_basket5,MODE_TICKVALUE);

AUDJPYm_pips = (AUDJPYm_now-AUDJPYm)/MarketInfo(long_basket6,MODE_POINT)-spread6;
//AUDJPYm_pips = AUDJPYm_pips*MarketInfo(long_basket6,MODE_TICKVALUE);

EURJPYm_pips = (EURJPYm_now-EURJPYm)/MarketInfo(long_basket7,MODE_POINT)-spread7;
//EURJPYm_pips = EURJPYm_pips*MarketInfo(long_basket7,MODE_TICKVALUE);

long_pips = GBPUSDm_pips + EURGBPm_pips + GBPJPYm_pips + USDCHFm_pips + NZDUSDm_pips + AUDJPYm_pips + EURJPYm_pips;
   RSIBuffer[i] = long_pips;
   
   EURUSDm_now= iClose(short_basket1, 0, i);
USDJPYm_now= iClose(short_basket2, 0, i);
AUDUSDm_now= iClose(short_basket3, 0, i);
NZDJPYm_now= iClose(short_basket4, 0, i);
GBPCHFm_now= iClose(short_basket5, 0, i);
CHFJPYm_now= iClose(short_basket6, 0, i);
EURCHFm_now= iClose(short_basket7, 0, i);
int    spread8=MarketInfo(short_basket1,MODE_SPREAD);
int    spread9=MarketInfo(short_basket2,MODE_SPREAD);
int    spread10=MarketInfo(short_basket3,MODE_SPREAD);
int    spread11=MarketInfo(short_basket4,MODE_SPREAD);
int    spread12=MarketInfo(short_basket5,MODE_SPREAD);
int    spread13=MarketInfo(short_basket6,MODE_SPREAD);
int    spread14=MarketInfo(short_basket7,MODE_SPREAD);
EURUSDm_pips = (EURUSDm-EURUSDm_now)/MarketInfo(short_basket1,MODE_POINT)-spread8;
//EURUSDm_pips = EURUSDm_pips*MarketInfo(short_basket1,MODE_TICKVALUE);

USDJPYm_pips = (USDJPYm-USDJPYm_now)/MarketInfo(short_basket2,MODE_POINT)-spread9;
//USDJPYm_pips = USDJPYm_pips*MarketInfo(short_basket2,MODE_TICKVALUE);

AUDUSDm_pips = (AUDUSDm-AUDUSDm_now)/MarketInfo(short_basket3,MODE_POINT)-spread10;
//AUDUSDm_pips = AUDUSDm_pips*MarketInfo(short_basket3,MODE_TICKVALUE);

NZDJPYm_pips = (NZDJPYm-NZDJPYm_now)/MarketInfo(short_basket4,MODE_POINT)-spread11;
//NZDJPYm_pips = NZDJPYm_pips*MarketInfo(short_basket4,MODE_TICKVALUE);

GBPCHFm_pips = (GBPCHFm-GBPCHFm_now)/MarketInfo(short_basket5,MODE_POINT)-spread12;
//GBPCHFm_pips = GBPCHFm_pips*MarketInfo(short_basket5,MODE_TICKVALUE);

CHFJPYm_pips = (CHFJPYm-CHFJPYm_now)/MarketInfo(short_basket6,MODE_POINT)-spread13;
//CHFJPYm_pips = CHFJPYm_pips*MarketInfo(short_basket6,MODE_TICKVALUE);

EURCHFm_pips = (EURCHFm-EURCHFm_now)/MarketInfo(short_basket7,MODE_POINT)-spread14;
//EURCHFm_pips = EURCHFm_pips*MarketInfo(short_basket7,MODE_TICKVALUE);

short_pips = EURUSDm_pips + USDJPYm_pips + AUDUSDm_pips + NZDJPYm_pips + GBPCHFm_pips + CHFJPYm_pips + EURCHFm_pips;
      PosBuffer[i] = short_pips;
      NegBuffer[i] = short_pips+long_pips;
   
      i--;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+