Overview of the Fozzy Daily Indicator
The Fozzy Daily Indicator is a sophisticated technical analysis tool designed to help traders visualize market momentum and identify specific price action signals. Rather than looking at price alone, this script processes underlying data through several layers of mathematical calculations to filter out "noise" and highlight potential entry or exit points.
How the Logic Works
The indicator functions by layering three primary types of technical analysis:
1. Momentum Tracking (RSI) At its core, the tool utilizes the Relative Strength Index (RSI). This measures the speed and change of price movements to determine if an asset is overbought or oversold. However, instead of showing you a raw RSI line, the script adds a second layer by calculating a Moving Average of that RSI. This helps smooth out erratic jumps, making it easier to see the actual trend of the momentum.
2. Volatility Boundaries (Bollinger Bands) To provide more context, the script then applies "Bands" to the smoothed momentum line (the RSI Moving Average). This creates a visual envelope consisting of:
- A Mid-Line: Representing the average momentum over a set period.
- Upper and Lower Boundaries: These expand and contract based on market volatility. By observing where the momentum sits within these bands, you can better understand if the current move is unusually strong or exhausted.
3. The Signal Generation Engine The ultimate goal of the script is to produce a clear Signal line. This line remains at a neutral midpoint until specific mathematical conditions are met simultaneously:
- Bullish Signal: A signal is triggered when the momentum (RSI) crosses upward over its moving average, provided that this movement is occurring while the average is still positioned below the previous period's middle band.
- Bearish Signal: Conversely, a downward signal is triggered when the momentum crosses below its moving average while the average is positioned above the current middle band.
Summary for the User
Essentially, this tool doesn't just tell you if the price is going up or down; it tells you if the momentum behind that movement is gaining strength or losing steam relative to recent history. By combining momentum (RSI), smoothing (Moving Averages), and volatility (Bollinger Bands), the indicator attempts to confirm high-probability turns in the market trend before they become obvious to the casual observer.
//+------------------------------------------------------------------+
//| 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,2);
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] && RSIMA[i]<BBMid[i+1]){
Signal[i] = 100;
} else {
if(RSI[i]<RSIMA[i] && RSI[i+1]>RSIMA[i+1] && RSIMA[i]>BBMid[i]){
Signal[i] = 0;
}
}
i--;
}
return(0);
}
//+------------------------------------------------------------------+
Comments