RSI_CL





//+------------------------------------------------------------------+
//|                                                       RSI_CL.mq4 |
//|                                                                * |
//|                                                                * |
//+------------------------------------------------------------------+
#property copyright "Integer"
#property link      "for-good-letters@yandex.ru"

#property indicator_separate_window
#property indicator_maximum 100
#property indicator_minimum 0
#property indicator_buffers 1
#property indicator_color1 Khaki
//---- input parameters
extern int     RSIPeriod   =  5;          // Ïåðèîä RSI
extern int     RSIPrice    =  0;          // Öåíà RSI: 0-Close, 1-Open, 2-High, 3-Low, 4-Median, 5-Typical, 6-Weighted
extern int     RSILevel    =  70;         // Âåðõíèé óðîâåíü RSI, íèæíèé ðàâåí 100-RSILevel
extern color   UpColor     =  DodgerBlue; // Öâåò âåðõíåãî óðîâíÿ ïðè çíà÷åíèè èíäèêàòîðà îò RSILevel è âûøå    
extern color   DnColor     =  Red;        // Öâåò íèæíåãî óðîâíÿ ïðè çíà÷åíèè èíäèêàòîðà îò 100-RSILevel è íèæå
extern color   NormColor   =  Gray;       // Îáû÷íûé öâåò óðîâíåé
extern int     IndicatorID =  1;          // Èäåíòèôèêàòîð èíäèêàòîðà.  ñëó÷àå, åñëè íåîáõîäèìî, ÷òîáû íà îäíîì ãðàôèêå ðàáîòàëî íåñêîëüêî èíäèêàòîðîâ ñ ðàçíûìè ïàðàìåòðàìè, ó âñåõ èíäèêàòîðîâ äîëæíû áûòü ðàçíûå çíà÷åíèÿ èäåíòèôèêàòîðà (íåîáõîäèìî äëÿ ïðàâèëüíîé ðàáîòû ñ ãðàôè÷åñêèìè îáúåêòàìè).
//---- buffers
double rsi[];
double up[];
double lo[];
int LoLevel;
string ShortName;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,rsi);
   
   LoLevel=100-RSILevel;

   SetLevelValue(0,50);
   
   SetIndexLabel(0,"RSI");
   
   SetIndexDrawBegin(0,RSIPeriod+1);
   
   ShortName="RSI CL "+IndicatorID;
   
   IndicatorShortName(ShortName);
   
   IndicatorDigits(2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   ObjectDelete("RSI_CL_"+IndicatorID+"_U");
   ObjectDelete("RSI_CL_"+IndicatorID+"_L");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
         int limit=Bars-IndicatorCounted();

            for(int i=limit-1;i>=0;i--){
               rsi[i]=iRSI(NULL,0,RSIPeriod,RSIPrice,i);

                  if(rsi[i]>=RSILevel){
                     if(rsi[i+1]>=RSILevel){
                        fObjHLine("RSI_CL_"+IndicatorID+"_U",RSILevel,UpColor,1,WindowFind(ShortName),0,false);
                     }
                     else{
                        fObjHLine("RSI_CL_"+IndicatorID+"_U",RSILevel,UpColor,1,WindowFind(ShortName),2,false);
                     }
                  }
                  else{
                     if(rsi[i+1]>=RSILevel){
                        fObjHLine("RSI_CL_"+IndicatorID+"_U",RSILevel,NormColor,1,WindowFind(ShortName),2,false);
                     }
                     else{
                        fObjHLine("RSI_CL_"+IndicatorID+"_U",RSILevel,NormColor,1,WindowFind(ShortName),0,false);
                     }
                  }
                  
                  if(rsi[i]<=LoLevel){
                     if(rsi[i+1]<=LoLevel){
                        fObjHLine("RSI_CL_"+IndicatorID+"_L",LoLevel,DnColor,1,WindowFind(ShortName),0,false);
                     }
                     else{
                        fObjHLine("RSI_CL_"+IndicatorID+"_L",LoLevel,DnColor,1,WindowFind(ShortName),2,false);
                     }
                  }
                  else{
                     if(rsi[i+1]<=LoLevel){
                        fObjHLine("RSI_CL_"+IndicatorID+"_L",LoLevel,NormColor,1,WindowFind(ShortName),2,false);
                     }
                     else{
                        fObjHLine("RSI_CL_"+IndicatorID+"_L",LoLevel,NormColor,1,WindowFind(ShortName),0,false);
                     }
                  }                
                  

            }
   return(0);
  }
//+------------------------------------------------------------------+

void fObjHLine(
   string aObjectName,  // 1 èìÿ
   double aPrice_1,     // 2 öåíà
   color aColor=Red,    // 3 öâåò
   int aWidth=1,        // 4 òîëùèíà
   int aWindowNumber=0, // 5 îêíî
   int aStyle=0,        // 6 0-STYLE_SOLID, 1-STYLE_DASH, 2-STYLE_DOT, 3-STYLE_DASHDOT, 4-STYLE_DASHDOTDOT
   bool aBack=false     // 7 ôîí
   ){
      if(ObjectFind(aObjectName)!=aWindowNumber){
         ObjectCreate(aObjectName,OBJ_HLINE,aWindowNumber,0,aPrice_1);
      }      
   ObjectSet(aObjectName,OBJPROP_PRICE1,aPrice_1);   
   ObjectSet(aObjectName,OBJPROP_COLOR,aColor);
   ObjectSet(aObjectName,OBJPROP_WIDTH,aWidth);
   ObjectSet(aObjectName,OBJPROP_BACK,aBack);   
   ObjectSet(aObjectName,OBJPROP_STYLE,aStyle);            
}





Sample





Analysis



Market Information Used:



Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:

Relative strength index


Custom Indicators Used:

Order Management characteristics:

Other Features: