//+------------------------------------------------------------------+ //| multisymbol_color-RSI_1.0.mq4| //| Lq_sunshine | //|mod. barlevel ki http://www.forex-tsd.com | //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 8 #property indicator_color1 C'188,253,176'//white #property indicator_color2 C'140,240,130' #property indicator_color3 C'73,204,70' #property indicator_color4 C'23,139,23' //green #property indicator_color5 C'255,185,185' #property indicator_color6 C'255,115,115' #property indicator_color7 C'255,76,76' #property indicator_color8 C'255,32,32' //red #property indicator_maximum 77 #property indicator_minimum 1 extern int Periode=14; extern bool invert_strength = 0; extern string CurrencyPair = ""; extern string NOTE_1 = "enter currencypair in uppercase"; extern string _____ = "like EURUSD"; extern string ______ = "leave empty for current symbol"; extern string NOTE_2 = "if you have a mini account"; extern string _______ = "add a \"m\" e.g EURUSDm "; extern bool lablesOn = true; extern int BarLevel= 10; //---- buffers double ExtBuffer0[]; double ExtBuffer1[]; double ExtBuffer2[]; double ExtBuffer3[]; double ExtBuffer4[]; double ExtBuffer5[]; double ExtBuffer6[]; double ExtBuffer7[]; double ExtBuffer8[]; //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int init() { SetIndexBuffer(0,ExtBuffer0); SetIndexBuffer(1,ExtBuffer1); SetIndexBuffer(2,ExtBuffer2); SetIndexBuffer(3,ExtBuffer3); SetIndexBuffer(4,ExtBuffer4); SetIndexBuffer(5,ExtBuffer5); SetIndexBuffer(6,ExtBuffer6); SetIndexBuffer(7,ExtBuffer7); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, 5); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, 5); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, 5); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, 5); SetIndexStyle(4,DRAW_HISTOGRAM, EMPTY, 5); SetIndexStyle(5,DRAW_HISTOGRAM, EMPTY, 5); SetIndexStyle(6,DRAW_HISTOGRAM, EMPTY, 5); SetIndexStyle(7,DRAW_HISTOGRAM, EMPTY, 5); for (int i=0;i<indicator_buffers;i++) SetIndexLabel(i,NULL); if (CurrencyPair == "") CurrencyPair = Symbol(); if (iClose(CurrencyPair,0,0) == 0) CurrencyPair = Symbol(); IndicatorShortName(CurrencyPair+"("+Periode+")"); if (lablesOn) { SetIndexLabel(0,"rsi50-55"); //litegreen SetIndexLabel(1,"rsi55-60"); SetIndexLabel(2,"rsi60-70"); SetIndexLabel(3,"rsi>70"); //green SetIndexLabel(4,"rsi45-50"); //litered SetIndexLabel(5,"rsi40-45"); SetIndexLabel(6,"rsi30-40"); SetIndexLabel(7,"rsi<30"); //red } return(1); } int deinit() { return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- check for possible errors if (counted_bars<0) return(-1); //---- last counted bar will be recounted if (counted_bars>0) counted_bars--; int pos=Bars-counted_bars; double ddraw; // double level[]; //---- main calculation loop while(pos>=0) { ddraw= iRSI(CurrencyPair,0,Periode,PRICE_CLOSE,pos); if (invert_strength==1) ddraw=ddraw-(ddraw-50)*2; //---- Inversion of the RSI if(ddraw<50) //---- RSI <= 48 draws RED blocks if(ddraw<50&&ddraw>45) //---- 44< RSI draws RED blocks drawblock(0,0,0,0,5,0,0,0,pos); else if(ddraw<=45&&ddraw>40) //---- 39< RSI draws RED blocks drawblock(0,0,0,0,0,5,0,0,pos); else if(ddraw<=40&&ddraw>30)//---- 35< RSI draws RED blocks drawblock(0,0,0,0,0,0,5,0,pos); else drawblock(0,0,0,0,0,0,0,5,pos); else if(ddraw>=50) //---- RSI >= 52 draws green blocks if(ddraw>=50&&ddraw<55)//---- RSI >= 52 <56 draws green blocks drawblock(5,0,0,0,0,0,0,0,pos); else if(ddraw>=55&&ddraw<60)//---- RSI >= 56 <60 draws green blocks drawblock(0,5,0,0,0,0,0,0,pos); else if(ddraw>=60&&ddraw<70)//---- 60>RSI<70 draws green blocks drawblock(0,0,5,0,0,0,0,0,pos); else drawblock(0,0,0,5,0,0,0,0,pos); //---- draw white block if there chart is ranging // pos--; } //---- return(0); } void drawblock(int a,int b,int c,int d,int e,int f,int g,int h,int pos) { ExtBuffer0[pos]=a*BarLevel; ExtBuffer1[pos]=b*BarLevel; ExtBuffer2[pos]=c*BarLevel; ExtBuffer3[pos]=d*BarLevel; ExtBuffer4[pos]=e*BarLevel; ExtBuffer5[pos]=f*BarLevel; ExtBuffer6[pos]=g*BarLevel; ExtBuffer7[pos]=h*BarLevel; }
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Indicator Curves created:
Implements a curve of type DRAW_HISTOGRAM
Indicators Used:
Relative strength index
Custom Indicators Used:
Order Management characteristics:
Other Features: