//+------------------------------------------------------------------+ //| multisymbol_color-RSI_1.0.mq4| //| Lq_sunshine | //| http://www.forex-tsd.com | //+------------------------------------------------------------------+ //mod. barlevel sto ki #property indicator_separate_window #property indicator_buffers 8 #property indicator_color1 Blue //C'29,165,29' //dark green #property indicator_color2 DodgerBlue //C'73,204,70' #property indicator_color3 DarkTurquoise //C'140,240,130' #property indicator_color4 Aquamarine //C'188,253,176' //lite green #property indicator_color5 Yellow //C'255,185,185' //lite red #property indicator_color6 Orange //C'255,115,115' #property indicator_color7 Red //C'255,76,76' #property indicator_color8 Maroon //C'255,32,32' //red #property indicator_maximum 77 #property indicator_minimum 1 //extern int Periode=14; extern int Periode=14; extern int PercentD=3; extern int Smooth=3; extern bool StoModeK = true; extern bool invert_strength = 0; extern string CurrencyPair = ""; extern bool lablesOn = true; extern int BarLevel= 10; 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 "; //---- 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,">90"); //litegreen SetIndexLabel(1,"<90"); SetIndexLabel(2,"<80"); SetIndexLabel(3,"<70"); //green SetIndexLabel(4,"<50"); //litered SetIndexLabel(5,"<30"); SetIndexLabel(6,"<20"); SetIndexLabel(7,"<10"); //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); double PK=iStochastic(NULL, 0,Periode,PercentD,Smooth,0,0,MODE_MAIN,pos); double PD=iStochastic(NULL, 0,Periode,PercentD,Smooth,0,0,MODE_SIGNAL,pos); if (StoModeK) ddraw=PK; else ddraw=PD; if (invert_strength==1) ddraw=ddraw-(ddraw-50)*2; //---- Inversion of the RSI if(ddraw<100) //---- RSI <= 48 draws RED blocks drawblock(5,0,0,0,0,0,0,0,pos); if(ddraw<90) //---- 44< RSI draws RED blocks drawblock(0,5,0,0,0,0,0,0,pos); if(ddraw<80) //---- 39< RSI draws RED blocks drawblock(0,0,5,0,0,0,0,0,pos); if(ddraw<70)//---- 35< RSI draws RED blocks drawblock(0,0,0,5,0,0,0,0,pos); if(ddraw<50)//---- RSI >= 52 <56 draws green blocks drawblock(0,0,0,0,5,0,0,0,pos); if(ddraw<30)//---- RSI >= 56 <60 draws green blocks drawblock(0,0,0,0,0,5,0,0,pos); if(ddraw<20)//---- 60>RSI<70 draws green blocks drawblock(0,0,0,0,0,0,5,0,pos); if(ddraw<10) drawblock(0,0,0,0,0,0,0,5,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:
Stochastic oscillator
Custom Indicators Used:
Order Management characteristics:
Other Features: