10Min_RsiSto_01

Download script
Author: Ron T
10Min_RsiSto_01

The "10 Minute trader" is a custom technical analysis tool designed to help traders identify specific high-probability market conditions by combining multiple momentum and trend indicators. Instead of relying on a single piece of data, this script looks for "confluence"—a situation where several different mathematical models agree on the market's direction simultaneously.

Core Logic Overview

The script scans historical price data to identify extreme conditions in two specific directions: overbought levels (where prices might be too high) and oversold levels (where prices might be too low). It uses a "multi-bar confirmation" approach, meaning it doesn't just look at what is happening right now; it checks the status of the market over several preceding candles to ensure a trend is stable.

How the Signals are Generated

1. The Momentum Filter (RSI) The script utilizes the Relative Strength Index (RSI) to determine the current strength of price movements. It specifically looks for sustained momentum by checking if the RSI has remained consistently above a certain threshold (60) or below a certain threshold (40) for four consecutive periods. This ensures that the tool only reacts to established moves rather than temporary spikes.

2. The Exhaustion Filter (Stochastic Oscillator) To complement the RSI, the script uses a Stochastic Oscillator. This is used to identify "exhaustion" points.

  • For Bearish Signals: It looks for instances where the Stochastic values have remained consistently above 80 across four consecutive periods while the RSI is high. This suggests the market is overextended to the upside.
  • For Bullish Signals: It looks for instances where the Stochastic values have remained consistently below 20 across four consecutive periods while the RSI is low. This suggests the market is overextended to the downside.

3. Visual Output When both the Momentum and Exhaustion conditions are met simultaneously, the script places visual markers on the chart:

  • Upward Arrows: These indicate potential opportunities based on the lower-bound exhaustion logic.
  • Downward Arrows: These indicate potential opportunities based on the upper-bound exhaustion logic.

Summary of Operation

The script effectively acts as a "filter" for the noise of the market. It ignores standard price fluctuations and only highlights moments where the RSI confirms a strong move and the Stochastic Oscillator indicates that the move may be reaching an extreme point. By requiring these conditions to persist over multiple bars, the logic attempts to filter out "fakeouts" and focus on significant shifts in price momentum.

Indicators Used
Moving average indicatorStochastic oscillatorRelative strength indexMACD Histogram
Miscellaneous
Implements a curve of type %1
14 Views
0 Downloads
0 Favorites
10Min_RsiSto_01
//+------------------------------------------------------------------+
//| 10 Minute trader                                                 |
//+------------------------------------------------------------------+
#property copyright "Ron T"
#property link      "http://www.lightpatch.com"

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 White  // arrow up for moving average
#property indicator_color2 White  // arrow down for moving average
#property indicator_color3 Aqua   // box for stoch
#property indicator_color4 Red    // box for rsi
#property indicator_color5 White  // box for macd
#property indicator_color6 White  // dot for early stoch cross

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


// 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,233);  //up
   
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexBuffer(1, ExtMapBuffer2);
   SetIndexArrow(1,234);  //down

   SetIndexStyle(2,DRAW_ARROW);
   SetIndexBuffer(2, ExtMapBuffer3);
   SetIndexArrow(2,168);  //open square

   SetIndexStyle(3,DRAW_ARROW);
   SetIndexBuffer(3, ExtMapBuffer4);
   SetIndexArrow(3,168);  //open square

   SetIndexStyle(4,DRAW_ARROW);
   SetIndexBuffer(4, ExtMapBuffer5);
   SetIndexArrow(4,168);  //open square

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

   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;

   return(0);
  }


//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   double    wma=0,    wma_p=0;  // linear Weighted Moving Average & Previous
   double    sma=0,    sma_p=0;  // Simple Moving Average & Previous
   double stochm=0, stochm_p=0;  // STOCHastic Main & Previous
   double stochs=0, stochs_p=0;  // STOCHastic Signal
   double  macdm=0;              // Moving Average Convergance Divergance Main
   double  macds=0;              // Moving Average Convergance Divergance Signal
   double    rsi=0;              // Relative Strength Indicator
   double   rsi1=0,     rsi2=0;  // 1st 2 periods of past history
   double   rsi3=0,     rsi4=0;  // 2nd 2 periods
   double stochm1=0, stochm2=0;
   double stochm3=0, stochm4=0;
     
   int pos=Bars-100;             // leave room for moving average periods
      
   while(pos>=0)
     {
     
      wma_p=wma; // save previous calculations
      wma=iMA(Symbol(),0,10,0,MODE_LWMA,PRICE_CLOSE,pos);

      sma_p=sma; // save previous calculations
      sma=iMA(Symbol(),0,20,0,MODE_SMA,PRICE_CLOSE,pos);
      
      stochm=iStochastic(Symbol(),0,10,6,6,0,1,0,pos);
      stochs=iStochastic(Symbol(),0,10,6,6,0,1,1,pos);
      stochm1=iStochastic(Symbol(),0,10,6,6,0,1,0,pos+1);
      stochm2=iStochastic(Symbol(),0,10,6,6,0,1,0,pos+2);
      stochm3=iStochastic(Symbol(),0,10,6,6,0,1,0,pos+3);
      stochm4=iStochastic(Symbol(),0,10,6,6,0,1,0,pos+4);
      
      rsi=iRSI(Symbol(),0,28,PRICE_CLOSE,pos);
      rsi1=iRSI(Symbol(),0,28,PRICE_CLOSE,pos+1);
      rsi2=iRSI(Symbol(),0,28,PRICE_CLOSE,pos+2);
      rsi3=iRSI(Symbol(),0,28,PRICE_CLOSE,pos+3);
      rsi4=iRSI(Symbol(),0,28,PRICE_CLOSE,pos+4);
      
      macdm=iMACD(Symbol(),0,24,52,18,0,0,pos);
      macds=iMACD(Symbol(),0,24,52,18,0,1,pos);
      
      // RISING stochastic cross
      // if (stochm_p>stochm && stochs_p<stochs && stochs>stochm)

      // FALLING stochastic cross
      // if (stochm_p<stochm && stochs_p>stochs && stochs<stochm)


      if (rsi1>60 && rsi2>60 && rsi3>60 && rsi4>60 )
        {
         if (stochm1>80 && stochm2>80 && stochm3>80 && stochm4>80 )                               //red
           {
            ExtMapBuffer1[pos]=wma - 0.0011;
           }
        }

      if (rsi1<40 && rsi2<40 && rsi3<40 && rsi4<40 )
        {
         if (stochm1<20 && stochm2<20 && stochm3<20 && stochm4<20 )                               //red
           {
            ExtMapBuffer2[pos]=wma - 0.0011;
           }
        }

 
 	   pos--;
     }

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

Comments