//+------------------------------------------------------------------+ //| bbsqueeze.mq4 | //| Copyright © 2005, Nick Bilak, beluck[AT]gmail.com | //|BBSqz sidebar(overlay) keris f-la mtf | //+------------------------------------------------------------------+ //2008fxtsd ki #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Gold #property indicator_width1 2 #property indicator_maximum 77 #property indicator_minimum 1 extern int TimeFrame=0; extern int BolPrd = 20; extern int BolMethod = 0; extern int BolPrice = 0; extern double BolDev = 2.0; extern int KeltPrd = 20; extern double KeltFactor = 1.5; extern int SqzBarLevel = 5; extern int MaxBarsToCount = 1500; extern string note_Price = "0C1O 2H3L 4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6"; extern string MA_Method = "SMA0 EMA1 SMMA2 LWMA3"; extern string TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN"; double ExtMapBuffer1[]; //+------ int init() { SetIndexStyle(0,DRAW_ARROW,EMPTY); SetIndexBuffer(0,ExtMapBuffer1); SetIndexEmptyValue(0,EMPTY_VALUE); SetIndexArrow(0,158);//159 SetIndexLabel(0,"BBSqz"); TimeFrame = MathMax (TimeFrame,Period()); switch(TimeFrame) { case 1 : string TimeFrameStr= "M1"; break; case 5 : TimeFrameStr= "M5"; break; case 15 : TimeFrameStr= "M15"; break; case 30 : TimeFrameStr= "M30"; break; case 60 : TimeFrameStr= "H1"; break; case 240 : TimeFrameStr= "H4"; break; case 1440 : TimeFrameStr= "D1"; break; case 10080 : TimeFrameStr= "W1"; break; case 43200 : TimeFrameStr= "MN1"; break; default : TimeFrameStr= "TF0"; } IndicatorShortName("BBSqz sB("+BolPrd+","+DoubleToStr(BolDev,2)+") ("+KeltPrd+","+DoubleToStr(KeltFactor,2)+") ["+TimeFrameStr+"] "); return(0); } //+--------- int start() { datetime TimeArray[]; int i,y,limit,counted_bars=IndicatorCounted(); ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame); double diff, std,bbs; if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit = Bars-counted_bars; limit = MathMax (limit,TimeFrame/Period()); limit = MathMin (limit,MaxBarsToCount); for(i=0,y=0;i<limit;i++) { if (Time[i]<TimeArray[y]) y++; diff = iATR(NULL,TimeFrame,KeltPrd,y)*KeltFactor; std = iStdDev(NULL,TimeFrame,BolPrd,BolMethod,0,BolPrice,y); if (diff != 0) bbs = BolDev * std / diff; else bbs = 0; if(bbs<1) ExtMapBuffer1[i]= SqzBarLevel; else ExtMapBuffer1[i]= EMPTY_VALUE; } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Indicator Curves created:
Implements a curve of type DRAW_ARROW
Indicators Used:
Indicator of the average true range
Standard Deviation indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: