Is this the one you are thinking of?
/*
Bollinger bands squeeze.
By Vladimir Gaitanoff, 2005. support<at>vglib<dot>com
This is a volatility indicator.
It can be used to determine the periods of extremes of low volatility
which usually followed by big moves.
Indicator does not show direction of the trade, only timing.
Some other aspects of technical/fundamental analysis should be employed
for direction.
There is a signal line with colored dots. Red dots indicate periods of
low volatility (sqeeze).
Green dots indicate periods of high volatility.
Indicator line crosses above and below signal line. Time trades at
historical extremes of low volatility.
It can be used for scans, for instance, to find stepper stocks before
big moves.
The original author of the idea uses it for intraday trading.
For confirmation look for sqeezes in two different time frames.
*/
Length = 8;
Price = EMA(Close, Length);
// Keltner
kLength = Length;
kN = 1.5;
kATR = ATR(kLength);
kUpper = Price + kN * kATR;
kLower = Price - kN * kATR;
// Bollinger
bbLength = Length;
bbN = 2;
bbStDevValues = StDev(Close, bbLength);
bbUpper = Price + bbN * bbStDevValues;
bbLower = Price - bbN * bbStDevValues;
IsSignal =
bbUpper <= kUpper AND
bbLower >= kLower;
Graph0 = 1;
Graph0Style = styleDots;
Graph0BarColor = IIf(IsSignal, colorRed, colorGreen);
Proportion = (kUpper - kLower) / (bbUpper - bbLower);
Graph1 = Proportion;
Title = "Next Move Signal. In squeeze: " + WriteVal(IsSignal, 1) + "
Keltner/Bollinger: " + WriteVal(Proportion);
--- In [email protected], "Lionel Issen" <lis...@...> wrote:
>
> I donât seem to have the BBsqueeze.afl indicator, Can you tell me where I
> can find it?
>
>
>
> Lionel
>
>
>
> From: [email protected] [mailto:[email protected]] On Behalf
> Of cas soni
> Sent: Sunday, July 18, 2010 7:32 AM
> To: [email protected]
> Subject: Re: [amibroker] Re: pl. code this
>
>
>
>
>
>
> Hello ,
>
> I had given you BBsqueeze .afl indicator long time ago...use that..i think
> it is same as per mt4 indicator..
>
> * i dont have that afl
>
> have a nice time. .
>
> --- On Sun, 18/7/10, bharat <bharat_parth2...@...> wrote:
>
>
> From: bharat <bharat_parth2...@...>
> Subject: [amibroker] Re: pl. code this
> To: [email protected]
> Date: Sunday, 18 July, 2010, 5:41 PM
>
>
>
> Hi
>
> Found full MT4 code for this.Pl. Code AFL
>
> ===========================================================================================================
> // This indicator is based on a strategy mentioned in John Carter's book,
> Mastering the Trade. The basic idea
> // behind the strategy is that markets tend to move from periods of low
> volatility to high volatility and
> // visa versa. The strategy aims to capture moves from low to high
> volatility. For gauging this he uses two
> // common indicators - Bollinger Bands and Keltner Channels (ok, not so
> common!). He also uses the Momentum
> // indicator to provide a trade bias as soon as the Bollinger Bands come back
> outside the Keltner Channels.
> //
> // The Squeeze_Break indicator combines this into a signal indicator and has
> the following components:
> // 1. A positive green histogram means that the Bollinger Bands are outside
> the Keltner Channels
> // and the market is lightly to be trending or volatile. The stronger the
> histogram the stronger
> // the directional price move.
> // 2. A negative red histogram means that the Bollinger Bands are inside the
> Keltner Channels
> // and the market is lightly to be consolidating. The stronger the red
> histogram the tighter
> // price action is becoming.
> // 3. Incorporated into the indicator is a Momentum indicator. According to
> the strategy J. Carter
> // goes long when the Bollinger Bands break outside the Keltner Bands and the
> Momentum indicator
> // is above the zero line. He goes short when the Momentum indicator is below
> the zero line on the
> // break.
> // 4. I've also added other indicator info in the top left hand corner to
> give a broader idea
> // of current market conditions.
> // 5. The indicator provides audio alerts when a potential breakout is
> occurring.
> //
> // This indicator tends to be better with the larger timeframes. Personally I
> don't trade on an alert
> // signal alone. It's just a handy tool for warning me of potential breakout
> trades.
> //
> ===========================================================================================================
>
> #property copyright "DesORegan"
> #property link "mailto: oregan_...@..."
>
>
>
> // ====================
> // indicator properties
> // ====================
> #property indicator_separate_window
> #property indicator_buffers 3
> #property indicator_color1 ForestGreen
> #property indicator_color2 Red
> #property indicator_color3 Blue
>
>
> // ===================
> // User Inputs
> // ===================
> extern int Boll_Period=20;
> extern double Boll_Dev=2.0;
> extern int Keltner_Period=20;
> extern double Keltner_Mul=1.5;
> extern int Momentum_Period=12;
> extern int Back_Bars=1000;
> extern bool Alert_On=true;
> extern bool On_Screen_Info=true;
>
>
> // =========================
> // Buffer Array Declarations
> // =========================
> double Pos_Diff[]; // Pos Histogram
> double Neg_Diff[]; // Neg Histogram
> double Momentum[]; // Momentum Indicator
>
>
> // ===========================
> // Internal Array Declarations
> // ===========================
> double Squeeze[]; // Used to track which "i" (index value) is above
> // and below zero line. 0 followed by 1 triggers alert
>
> // =========================
> // Internal Global Variables
> // =========================
>
> datetime Last_Alert_Time = 0; // Used to prevent continuous alerts on current
> bar
>
>
> //+----------------------------------------------------------+
> //| Custom indicator initialization function |
> //+----------------------------------------------------------+
> int init()
> {
>
> IndicatorDigits(4); // indicator value precision
>
>
> //======================
> // Indicator Setup
> //======================
> SetIndexStyle(0,DRAW_HISTOGRAM,EMPTY,3);
> SetIndexBuffer(0,Pos_Diff);
> SetIndexStyle(1,DRAW_HISTOGRAM,EMPTY,3);
> SetIndexBuffer(1,Neg_Diff);
> SetIndexStyle(2,DRAW_LINE,STYLE_DOT);
> SetIndexBuffer(2,Momentum);
>
>
> // ===================
> // Indicator Labels
> // ===================
> IndicatorShortName("Squeeze_Break
> (Boll:"+Boll_Period+","+DoubleToStr(Boll_Dev,1)+";Kelt:"+Keltner_Period+","+DoubleToStr(Keltner_Mul,1)+";Mom:"+Momentum_Period+")");
>
>
>
> // ====================
> // Array Initialization
> // ====================
> ArrayResize(Squeeze, Back_Bars); // Stores whether histogram is above/below
> zero line
> ArrayInitialize(Squeeze, 0); // initialises array with 0's
>
>
>
>
> return(0);
> }
>
>
>
>
> //+----------------------------------------------------------+
> //| Custom indicator deinitialization function |
> //+----------------------------------------------------------+
> int deinit()
> {
>
> ObjectsDeleteAll();
> Comment(" ","\n",
> " ","\n",
> " ","\n",
> " ","\n",
> " ");
>
>
> return(0);
> }
>
>
>
>
> //+----------------------------------------------------------+
> //| Custom indicator iteration function |
> //+----------------------------------------------------------+
> int start()
> {
>
> //=======================
> // Indicator Optimization
> //=======================
> int Counted_Bars = IndicatorCounted();
> if(Counted_Bars < 0) return;
> if(Counted_Bars > 0) Counted_Bars = Counted_Bars - Keltner_Period;
> int limit = Bars - Counted_Bars;
>
>
> //=======================
> // On-Screen Information
> //=======================
> if (On_Screen_Info == true)
> {
> double ATR =iATR(Symbol(),PERIOD_D1,14,0);
> double Todays_Range = iHigh(Symbol(),PERIOD_D1,0) -
> iLow(Symbol(),PERIOD_D1,0);
> double ADX = iADX(Symbol(),0,12,PRICE_CLOSE,MODE_MAIN,0);
> double RSI = iRSI(Symbol(),0,12,PRICE_CLOSE,0);
> double MACD_Main = iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
> double MACD_Signal = iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
> double Sto_Main = iStochastic(Symbol(),0,10,3,3,MODE_SMA,1,MODE_MAIN,0);
> double Sto_Signal = iStochastic(Symbol(),0,10,3,3,MODE_SMA,1,MODE_SIGNAL,0);
>
>
> Comment("----------------------------------------------------------",
> "\nDaily ATR(14): ",ATR," Todays Range: ",Todays_Range,
> "\nADX(12): ",NormalizeDouble(ADX,2)," RSI(12): ",NormalizeDouble(RSI,2),
> "\nMACD(12,26,9): ",MACD_Main,", ",MACD_Signal,
> "\nStochastic(10,3,3): ",NormalizeDouble(Sto_Main,2),",
> ",NormalizeDouble(Sto_Signal,2),
> "\n----------------------------------------------------------");
> }
>
>
>
>
> //======================
> // Main Indicator Loop
> //======================
>
> for(int i = limit; i >= 0; i--) //main indicator FOR loop
> {
>
> // ======================
> // Indicator Calculations
> // ======================
> double MA_Hi = iMA(Symbol(),0,Keltner_Period,0,MODE_SMA,PRICE_HIGH,i);
> double MA_Lo = iMA(Symbol(),0,Keltner_Period,0,MODE_SMA,PRICE_LOW,i);
> double Kelt_Mid_Band =
> iMA(Symbol(),0,Keltner_Period,0,MODE_SMA,PRICE_TYPICAL,i);
> double Kelt_Upper_Band = Kelt_Mid_Band + ((MA_Hi - MA_Lo)*Keltner_Mul);
> double Kelt_Lower_Band = Kelt_Mid_Band - ((MA_Hi - MA_Lo)*Keltner_Mul);
> double Boll_Upper_Band = iBands(Symbol(),0,
> Boll_Period,Boll_Dev,0,PRICE_CLOSE, MODE_UPPER,i);
> double Boll_Lower_Band = iBands(Symbol(),0,
> Boll_Period,Boll_Dev,0,PRICE_CLOSE, MODE_LOWER,i);
>
>
> // ======================
> // Buffer Calculations
> // ======================
>
> Momentum[i] = (Close[i] - Close[i+Momentum_Period]);
>
>
> if (Boll_Upper_Band >= Kelt_Upper_Band || Boll_Lower_Band <= Kelt_Lower_Band)
> {
> Pos_Diff[i] = (MathAbs(Boll_Upper_Band -
> Kelt_Upper_Band)+MathAbs(Boll_Lower_Band - Kelt_Lower_Band));
> Squeeze[i] = 1;
> }
> else
> {
> Pos_Diff[i] = 0;
> }
>
>
> if (Boll_Upper_Band < Kelt_Upper_Band && Boll_Lower_Band > Kelt_Lower_Band)
> {
> Neg_Diff[i] = -(MathAbs(Boll_Upper_Band -
> Kelt_Upper_Band)+MathAbs(Boll_Lower_Band - Kelt_Lower_Band));
> Squeeze[i] = 0;
> }
> else
> {
> Neg_Diff[i] = 0;
> }
>
>
> // ======================
> // Trigger Check
> // ======================
> if (Squeeze[i] == 1 && Squeeze[i+1] == 0 && Momentum[i] > 0 && i == 0) // a
> cross above zero line and Mom > 0
> {
> if (Last_Alert_Time != Time[0])
> {
> if (Alert_On == true) Alert("Alert: Possible Breakout - "+Symbol()+" -
> "+TimeToStr(TimeLocal()));
> Last_Alert_Time = Time[0];
> ObjectCreate("Breakout"+Time[0],OBJ_ARROW,0,Time[0],Ask);
> ObjectSet("Breakout"+Time[0],OBJPROP_ARROWCODE,1);
> ObjectSet("Breakout"+Time[0],OBJPROP_COLOR,Blue);
> ObjectSet("Breakout"+Time[0],OBJPROP_WIDTH,2);
> }
> }
>
>
> if (Squeeze[i] == 1 && Squeeze[i+1] == 0 && Momentum[i] < 0 && i == 0 ) // a
> cross above zero line and Mom < 0
> {
> if (Last_Alert_Time != Time[0])
> {
> if (Alert_On == true) Alert("Alert: Possible Breakout - "+Symbol()+" -
> "+TimeToStr(TimeLocal()));
> Last_Alert_Time = Time[0];
> ObjectCreate("Breakout"+Time[0],OBJ_ARROW,0,Time[0],Bid);
> ObjectSet("Breakout"+Time[0],OBJPROP_ARROWCODE,1);
> ObjectSet("Breakout"+Time[0],OBJPROP_COLOR,Red);
> ObjectSet("Breakout"+Time[0],OBJPROP_WIDTH,2);
> }
> }
>
>
>
> } // end of main indicator FOR loop
>
>
>
>
>
>
> return(0);
> }
>
>
>
> //+----------------------------------------------------------
>
> --- In [email protected], "bharat" <bharat_parth2005@> wrote:
> >
> > Hi
> >
> > Pl. see
> > http://www.inditraders.com/metatrader/1762-mq4-indicators-metatrader.html
> > This indicator is based on a strategy mentioned in John Carter's book,
> > Mastering the Trade. The basic idea
> > // behind the strategy is that markets tend to move from periods of low
> > volatility to high volatility and
> > // visa versa. The strategy aims to capture moves from low to high
> > volatility. For gauging this he uses two
> > // common indicators - Bollinger Bands and Keltner Channels (ok, not so
> > common!). He also uses the Momentum
> > // indicator to provide a trade bias as soon as the Bollinger Bands come
> > back outside the Keltner Channels.
> > //
> > // The Squeeze_Break indicator combines this into a signal indicator and
> > has the following components:
> > // 1. A positive green histogram means that the Bollinger Bands are outside
> > the Keltner Channels
> > // and the market is lightly to be trending or volatile. The stronger the
> > histogram the stronger
> > // the directional price move.
> > // 2. A negative red histogram means that the Bollinger Bands are inside
> > the Keltner Channels
> > // and the market is lightly to be consolidating. The stronger the red
> > histogram the tighter
> > // price action is becoming.
> > // 3. Incorporated into the indicator is a Momentum indicator. According to
> > the strategy J. Carter
> > // goes long when the Bollinger Bands break outside the Keltner Bands and
> > the Momentum indicator
> > // is above the zero line. He goes short when the Momentum indicator is
> > below the zero line on the
> > // break.
> > // 4. I've also added other indicator info in the top left hand corner to
> > give a broader idea
> > // of current market conditions.
> > // 5. The indicator provides audio alerts when a potential breakout is
> > occurring.
> > //
> > // This indicator tends to be better with the larger timeframes. Personally
> > I don't trade on an alert
> > // signal alone. It's just a handy tool for warning me of potential
> > breakout trades.
> >
> >
> > make AFL for me.
> >
> > thanx
> >
> > bharat
> >
>