AO_FozzySignalALL

Download script
Author: Fozzy
AO_FozzySignalALL

The Fozzy Daily Indicator is a technical analysis tool designed to help traders visualize momentum and volatility trends in a single, dedicated window. Rather than looking at raw price action alone, this script processes three distinct layers of data to provide a clearer picture of market sentiment.

How the Logic Works

The indicator operates by layering three different types of mathematical calculations on top of one another:

1. Momentum Tracking (RSI & RSI-MA) First, the tool calculates the Relative Strength Index (RSI). This is a standard measure used to determine whether an asset is being overbought or oversold. To smooth out the "noise" of the market, the script then takes that RSI data and applies a Moving Average (RSIMA). By comparing the actual RSI against its moving average, the indicator helps identify where the current momentum is heading relative to its recent past.

2. Volatility Mapping (Bollinger Bands) Next, the tool creates a set of boundaries known as Bollinger Bands. Interestingly, instead of applying these bands directly to the price, this script applies them to the RSIMA (the moving average of the RSI). This creates a "band" around the momentum line. These bands help define the "normal" range of market activity; when the momentum pushes toward or beyond these dots, it signals significant strength or weakness in the trend.

3. The Signal Generation The final layer is the automated Signal logic. The script looks for specific "crossovers"—moments where the momentum (RSI) crosses its moving average line.

  • When the RSI crosses from below to above the moving average, it generates a high signal point.
  • When the RSI crosses from above to below the moving average, it generates a low signal point.

Summary for the Trader

Essentially, this indicator acts as a filter. It takes raw price data, converts it into momentum, smooths that momentum out to remove distractions, and then draws boundaries around it to show volatility. The final result is a visual map that helps you see exactly when the trend is shifting direction, providing clear markers for potential entry or exit points based on momentum shifts.

Indicators Used
Relative strength indexMoving average indicator
Miscellaneous
Implements a curve of type %1
18 Views
0 Downloads
0 Favorites
AO_FozzySignalALL
//+------------------------------------------------------------------+
//|                Fozzy Daily Indicator                           |
//|                Programmed by Aidrian O'Connor                  |
//|                http://www.unitone.org            |
//+------------------------------------------------------------------+
#property copyright "Fozzy"
#property link      "http://"

#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 White
#property indicator_color4 White
#property indicator_color5 White
#property indicator_color6 Green

//---- indicator parameters
extern int    RSIPeriod = 8;
extern int    RSIMAPeriod = 8;
extern int    BandsPeriod=20;
extern int    BandsShift=0;
extern double BandsDeviations=2.0;

//---- buffers
double RSI[];
double RSIMA[];
double BBMid[];
double BBUp[];
double BBDn[];
double Signal[];
int i;
  
int init()
  {

  IndicatorBuffers(6);
 
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID);
   SetIndexDrawBegin(0,i-1);
   SetIndexBuffer(0, RSI);
   SetIndexLabel(0,"RSI");

   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID);
   SetIndexDrawBegin(1,i-1);
   SetIndexBuffer(1, RSIMA);
   SetIndexLabel(1,"RSI-MA");
   
   SetIndexStyle(2,DRAW_LINE,STYLE_DOT);
   SetIndexDrawBegin(2,i-1);
   SetIndexBuffer(2, BBMid);
   SetIndexLabel(2,"BB-Mid");
   
   SetIndexStyle(3,DRAW_LINE,STYLE_DOT);
   SetIndexDrawBegin(3,i-1);
   SetIndexBuffer(3, BBUp);
   SetIndexLabel(3,"BB-Up");
   
   SetIndexStyle(4,DRAW_LINE,STYLE_DOT);
   SetIndexDrawBegin(4,i-1);
   SetIndexBuffer(4, BBDn);
   SetIndexLabel(4,"BB-Dn");
   
   SetIndexStyle(5,DRAW_LINE,STYLE_SOLID,1);
   SetIndexDrawBegin(5,i-1);
   SetIndexBuffer(5, Signal);
   SetIndexLabel(5,"Signal");
 
   return(0);
  }

int start()
  {
   i=Bars-BandsPeriod;
   while(i>=0) {
     RSI[i] = iRSI(NULL,0,RSIPeriod,PRICE_CLOSE,i);
   i--;
   }
   
   i=Bars-BandsPeriod;
   while(i>=0) {
     RSIMA[i] = iMAOnArray(RSI,0,RSIMAPeriod,0,MODE_SMA,i);
   i--;
   }
   
   i=Bars-BandsPeriod;
   while(i>=0) {
     BBMid[i] = iMAOnArray(RSIMA,0,BandsPeriod,BandsShift,MODE_SMA,i);
     BBUp[i] = iBandsOnArray(RSIMA,0,BandsPeriod,BandsDeviations,BandsShift,MODE_UPPER,i);
     BBDn[i] = iBandsOnArray(RSIMA,0,BandsPeriod,BandsDeviations,BandsShift,MODE_LOWER,i);
   i--;
   }
   
   i=Bars-BandsPeriod;
   while(i>=0) {
      Signal[i] = 50;
      if(RSI[i]>RSIMA[i] && RSI[i+1]<RSIMA[i+1]){
         Signal[i] = 100;
      } else {
      
         if(RSI[i]<RSIMA[i] && RSI[i+1]>RSIMA[i+1]){
            Signal[i] = 0;
         }
      }
      
   i--;
   }
   return(0);
  }
 
//+------------------------------------------------------------------+

Comments