Stochastic Bollinger Bands
Download scriptThis custom indicator is designed to provide traders with a unique visual tool by combining two well-known market analysis techniques into a single unified display. Instead of viewing standard momentum and volatility separately, this script overlays them to create a "Stochastic Bollinger Band" system.
How the Logic Works
1. The Foundation: Momentum Analysis The script begins by calculating a Stochastic oscillator. In trading, this is typically used to determine if a market is "overbought" or "oversold." It tracks the relative position of price movements over a specific period to identify where the market's momentum is heading.
2. The Layering: Volatility Envelopes Rather than applying standard Bollinger Bands directly to the price of the asset (like Gold, Forex pairs, or Stocks), this script applies Bollinger Bands specifically to the Stochastic oscillator values.
By doing this, the indicator creates a "channel" around the momentum line. This allows you to see:
- The Middle Line: The baseline average of the momentum.
- The Upper and Lower Bands: The boundaries of normal volatility for that momentum.
What This Means for the User
By merging these two tools, the indicator provides a more nuanced view of market dynamics than either tool could offer on its own. It helps you visualize whether the current momentum is moving aggressively toward an extreme (hitting the outer bands) or if it is stabilizing within a normal range.
In practical terms, it helps filter out "noise." When the Stochastic line pushes outside of these Bollinger Bands, it may indicate an exhausted trend or a significant shift in market energy, providing a clearer signal for potential entries or exits based on both momentum and volatility simultaneously.
#property copyright "Copyright © 2007, Matt Edmonds."
#property link "matt.edmonds@gmail.com"
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Yellow
#property indicator_color2 White
#property indicator_color3 White
#property indicator_color4 White
extern int StochasticPeriod=1;
extern int BollingerPeriod=10;
extern int BollingerDeviation = 2;
extern int BollingerShift = 0;
//---- indicator buffers
double Stochastic[];
double BollingerUpper[];
double BollingerLower[];
double BollingerMiddle[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- 2 additional buffers are used for counting.
IndicatorBuffers(4);
//---- drawing settings
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1);
SetIndexStyle(3,DRAW_LINE,STYLE_DOT,1);
SetIndexBuffer(0,Stochastic);
SetIndexLabel(0,"Stochastic Bollinger Bands");
SetIndexBuffer(1,BollingerUpper);
SetIndexBuffer(2,BollingerLower);
SetIndexBuffer(3,BollingerMiddle);
SetIndexLabel(3,"Bollinger Middle");
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("Stochastic Bollinger Bands");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Calculations |
//+------------------------------------------------------------------+
int start()
{
int limit;
int i;
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- main loop
for(i=0; i<Bars; i++)
{
Stochastic[i]= iStochastic(NULL, 0, StochasticPeriod, 1, 3, MODE_SMA, 0, MODE_MAIN, i);
}
//---- done
for(i=0; i<Bars; i++)
{
BollingerLower[i] = iBandsOnArray(Stochastic,0,BollingerPeriod,BollingerDeviation,BollingerShift,MODE_LOWER,i);
BollingerUpper[i] = iBandsOnArray(Stochastic,0,BollingerPeriod,BollingerDeviation,BollingerShift,MODE_UPPER,i);
BollingerMiddle[i] = iBandsOnArray(Stochastic,0,BollingerPeriod,BollingerDeviation,BollingerShift,MODE_MAIN,i);
}
return(0);
}
//+------------------------------------------------------------------+
Comments