5min_rsi_qual_02IND_v2

Download script
Author: Ron T
5min_rsi_qual_02IND_v2

This indicator is designed to identify specific momentum shifts in the market by analyzing the Relative Strength Index (RSI). Instead of simply looking at a single data point, the script evaluates "qualified" trends—meaning it looks for sustained periods of strength or weakness before providing a visual signal on your chart.

Core Logic Overview

The tool operates by monitoring the RSI over a rolling timeframe to determine if the market is moving with consistent conviction. It uses two distinct layers of verification:

1. Trend Qualification (Short-Term) The script first checks if the current price momentum has stayed consistently above or below the 50-level midline for at least 11 consecutive bars. This ensures that a minor, temporary fluctuation doesn't trigger a false signal; the move must have a baseline of "quality" duration.

2. Momentum Exhaustion (Long-Term) To prevent entering a trade too late or during an overextended move, the script performs a secondary check over a longer window (22 bars). It looks to see if the trend has been sustained for too long.

Signal Generation

The indicator generates signals only when there is a specific "sweet spot" between these two conditions:

  • For Bullish Signals: The script identifies instances where the RSI has remained consistently above 50 for the recent short-term window (11 bars), but it has not been consistently above 50 for the much longer 22-bar window. This suggests that the upward momentum is fresh and hasn't reached an exhaustive "over-stretched" state.
  • For Bearish Signals: Conversely, it looks for instances where the RSI has remained consistently below 50 for the short-term window (11 bars), but has not been consistently below 50 for the 22-bar window. This highlights a recent, qualified move to the downside that still has room to develop.

Visual Output

When these specific conditions are met—where the trend is "qualified" but not yet "exhausted"—the script places visual markers (dots) on your trading chart. These dots serve as alerts for potential entries, highlighting areas where the price momentum shows the strongest statistical probability of continuing its current direction.

Indicators Used
Relative strength index
Miscellaneous
Implements a curve of type %1
15 Views
0 Downloads
0 Favorites
5min_rsi_qual_02IND_v2
//+------------------------------------------------------------------+
//| 5 Min RSI 12-period qual INDICATOR                               |
//+------------------------------------------------------------------+
#property copyright "Ron T"
#property link      "http://www.lightpatch.com"

#property indicator_chart_window
#property indicator_buffers 8

#property indicator_color1 DodgerBlue

//#property indicator_color1 Red
#property indicator_color2 HotPink
#property indicator_color3 LightPink
#property indicator_color4 MistyRose

#property indicator_color5 DodgerBlue

//#property indicator_color5 White
#property indicator_color6 LightGray
#property indicator_color7 LightSlateGray
#property indicator_color8 DarkGray


//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];


// User Input


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//|------------------------------------------------------------------|

int init()
  {

   // 233 up arrow
   // 234 down arrow
   // 159 big dot
   // 168 open square
   
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexBuffer(0, ExtMapBuffer1);
   SetIndexArrow(0,159);  //up
   
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexBuffer(1, ExtMapBuffer2);
   SetIndexArrow(1,159);  //down

   SetIndexStyle(2,DRAW_ARROW);
   SetIndexBuffer(2, ExtMapBuffer3);
   SetIndexArrow(2,159);

   SetIndexStyle(3,DRAW_ARROW);
   SetIndexBuffer(3, ExtMapBuffer4);
   SetIndexArrow(3,159);

   SetIndexStyle(4,DRAW_ARROW);
   SetIndexBuffer(4, ExtMapBuffer5);
   SetIndexArrow(4,159);

   SetIndexStyle(5,DRAW_ARROW);
   SetIndexBuffer(5, ExtMapBuffer6);
   SetIndexArrow(5,159);

   SetIndexStyle(6,DRAW_ARROW);
   SetIndexBuffer(6, ExtMapBuffer7);
   SetIndexArrow(6,159);

   SetIndexStyle(7,DRAW_ARROW);
   SetIndexBuffer(7, ExtMapBuffer8);
   SetIndexArrow(7,159);

   return(0);
  }


//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   int i;
   
   for( i=0; i<Bars; i++ ) ExtMapBuffer1[i]=0;
   for( i=0; i<Bars; i++ ) ExtMapBuffer2[i]=0;
   for( i=0; i<Bars; i++ ) ExtMapBuffer3[i]=0;
   for( i=0; i<Bars; i++ ) ExtMapBuffer4[i]=0;
   for( i=0; i<Bars; i++ ) ExtMapBuffer5[i]=0;
   for( i=0; i<Bars; i++ ) ExtMapBuffer6[i]=0;
   for( i=0; i<Bars; i++ ) ExtMapBuffer7[i]=0;
   for( i=0; i<Bars; i++ ) ExtMapBuffer8[i]=0;

   return(0);
  }


//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

// Current position if 55/45 or over/under. Does any of 
// the previous 'qual' period ever fall below55/above45? (last11)
//
// If qual*2 periods have been above55/below45
// then lets not try to transact any more (last22)
         

int start()
  {
   double   rsi=0;        // Relative Strength Indicator
   int      i=0;
   int      pos=Bars-100; // leave room for moving average periods
   int      qual=11;       // how many bars to qualify
   
   bool   last11=true;        // qualify flag
   bool   last22=true;        // qualify flag
      
   while(pos>=0)
     {
      rsi=iRSI(Symbol(),0,28,PRICE_CLOSE,pos);
      
      if (rsi>50)
        {
         //ExtMapBuffer8[pos]=High[pos]+0.0006;
         last11=true;
         for(i=pos+1; i<=(pos+qual); i++)
           {
            if (iRSI(Symbol(),0,28,PRICE_CLOSE,i)<50) last11=false;
           }
         //if (last11==true) ExtMapBuffer7[pos]=High[pos]+0.0004;

         last22=true;
         for(i=pos+1; i<=(pos+(qual*2)); i++)
           {
            if (iRSI(Symbol(),0,28,PRICE_CLOSE,i)<50) last22=false;
           }
         //if (last22==true) ExtMapBuffer6[pos]=High[pos]+0.0002;

         if (last11==true && last22==false) ExtMapBuffer1[pos]=High[pos]+0.0003;
        }


      if (rsi<50)
        {
         //ExtMapBuffer4[pos]=Low[pos]-0.0006;
         last11=true;
         for(i=pos+1; i<=(pos+qual); i++)
           {
            if (iRSI(Symbol(),0,28,PRICE_CLOSE,i)>50) last11=false;
           }
         //if (last11==true) ExtMapBuffer3[pos]=Low[pos]-0.0004;

         last22=true;
         for(i=pos+1; i<=(pos+(qual*2)); i++)
           {
            if (iRSI(Symbol(),0,28,PRICE_CLOSE,i)>50) last22=false;
           }
         //if (last22==true) ExtMapBuffer2[pos]=Low[pos]-0.0002;

         if (last11==true && last22==false) ExtMapBuffer5[pos]=Low[pos]-0.0003;
        }




 	   pos--;
     }

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

Comments