You did not give the link. Lionel
From: amibroker@yahoogroups.com [mailto:amibro...@yahoogroups.com] On Behalf Of bharat Sent: Sunday, July 18, 2010 9:06 PM To: amibroker@yahoogroups.com Subject: [amibroker] Re: pl. code this AFL which you have mentioned is available here.Check and tweak. --- In amibroker@yahoogroups.com <mailto:amibroker%40yahoogroups.com> , cas soni <soni...@...> wrote: > > 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: amibroker@yahoogroups.com <mailto:amibroker%40yahoogroups.com> > 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 amibroker@yahoogroups.com <mailto:amibroker%40yahoogroups.com> , "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 > > > >
<<image001.jpg>>
<<image002.jpg>>