//+------------------------------------------------------------------+ //| BBFiboX_mtf EMA13shft3 Bands.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //|mtf forexTSD.com mladenfxbs4lodolLockhart http:www.metaquotes.net| //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property indicator_chart_window #property indicator_buffers 7 #property indicator_color1 DimGray #property indicator_color2 C'0,128,0' #property indicator_color3 C'128,0,0' #property indicator_color4 C'0,192,0' #property indicator_color5 C'192,0,0' #property indicator_color6 C'0,255,0' #property indicator_color7 C'255,0,0' //---- indicator parameters extern int TimeFrame = 0; extern int BandsPeriod=13; extern int BandsMAMethod = MODE_EMA; //"SMA0,EMA1,SMMA2,LWMA3;//price Close extern int BandsShift=0; extern double BandsFiboDeviation1=1.618; extern double BandsFiboDeviation2=2.618; extern double BandsFiboDeviation3=3.618; // extern string note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN"; extern string note_BandsMAMethod = "SMA0,EMA1,SMMA2,LWMA3"; string IndicatorFileName; //---- buffers double MovingBuffer[]; double UpperBuffer1[]; double LowerBuffer1[]; double UpperBuffer2[]; double LowerBuffer2[]; double UpperBuffer3[]; double LowerBuffer3[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexBuffer(0,MovingBuffer); SetIndexBuffer(1,UpperBuffer1); SetIndexBuffer(2,LowerBuffer1); SetIndexBuffer(3,UpperBuffer2); SetIndexBuffer(4,LowerBuffer2); SetIndexBuffer(5,UpperBuffer3); SetIndexBuffer(6,LowerBuffer3); //---- if(TimeFrame==0) TimeFrame = Period(); // SetIndexShift(0,BandsShift*TimeFrame/Period()); SetIndexShift(1,BandsShift*TimeFrame/Period()); SetIndexShift(2,BandsShift*TimeFrame/Period()); SetIndexShift(3,BandsShift*TimeFrame/Period()); SetIndexShift(4,BandsShift*TimeFrame/Period()); SetIndexShift(5,BandsShift*TimeFrame/Period()); SetIndexShift(6,BandsShift*TimeFrame/Period()); SetIndexLabel(0,"BBFiboMA("+BandsPeriod+")["+TimeFrame+"]"); SetIndexLabel(1,"BBFibo("+BandsPeriod+")Up1 "+BandsFiboDeviation1+"["+TimeFrame+"]"); SetIndexLabel(2,"BBFibo("+BandsPeriod+")Lo1 "+BandsFiboDeviation1+"["+TimeFrame+"]"); SetIndexLabel(3,"BBFibo("+BandsPeriod+")Up2 "+BandsFiboDeviation2+"["+TimeFrame+"]"); SetIndexLabel(4,"BBFibo("+BandsPeriod+")Lo2 "+BandsFiboDeviation2+"["+TimeFrame+"]"); SetIndexLabel(5,"BBFibo("+BandsPeriod+")Up3 "+BandsFiboDeviation3+"["+TimeFrame+"]"); SetIndexLabel(6,"BBFibo("+BandsPeriod+")Lo3 "+BandsFiboDeviation3+"["+TimeFrame+"]"); for (int in=0; in<indicator_buffers; in++) SetIndexDrawBegin(in,BandsPeriod+ BandsShift); if (TimeFrame < Period()) TimeFrame = Period(); IndicatorFileName = WindowExpertName(); //---- return(0); } //+------------------------------------------------------------------+ //| Bollinger Bands | //+------------------------------------------------------------------+ int start() { int counted_bars1=IndicatorCounted(); int limit1,i1; if(counted_bars1 < 0) return(-1); limit1 = Bars-counted_bars1; if (TimeFrame != Period()) { limit1 = MathMax(limit1,TimeFrame/Period()); datetime TimeArray[]; ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame); for(i1=0,int y=0; i1<limit1; i1++) { // if (TimeFrame < Period()) TimeFrame = Period(); if(Time[i1]<TimeArray[y]) y++; MovingBuffer [i1] = iCustom(NULL,TimeFrame,IndicatorFileName, 0, BandsPeriod,BandsMAMethod,0,BandsFiboDeviation1, BandsFiboDeviation2,BandsFiboDeviation3, 0,y); UpperBuffer1 [i1] = iCustom(NULL,TimeFrame,IndicatorFileName, 0, BandsPeriod,BandsMAMethod,0,BandsFiboDeviation1, BandsFiboDeviation2,BandsFiboDeviation3, 1,y); LowerBuffer1 [i1] = iCustom(NULL,TimeFrame,IndicatorFileName, 0, BandsPeriod,BandsMAMethod,0,BandsFiboDeviation1, BandsFiboDeviation2,BandsFiboDeviation3, 2,y); UpperBuffer2 [i1] = iCustom(NULL,TimeFrame,IndicatorFileName, 0, BandsPeriod,BandsMAMethod,0,BandsFiboDeviation1, BandsFiboDeviation2,BandsFiboDeviation3, 3,y); LowerBuffer2 [i1] = iCustom(NULL,TimeFrame,IndicatorFileName, 0, BandsPeriod,BandsMAMethod,0,BandsFiboDeviation1, BandsFiboDeviation2,BandsFiboDeviation3, 4,y); UpperBuffer3 [i1] = iCustom(NULL,TimeFrame,IndicatorFileName, 0, BandsPeriod,BandsMAMethod,0,BandsFiboDeviation1, BandsFiboDeviation2,BandsFiboDeviation3, 5,y); LowerBuffer3 [i1] = iCustom(NULL,TimeFrame,IndicatorFileName, 0, BandsPeriod,BandsMAMethod,0,BandsFiboDeviation1, BandsFiboDeviation2,BandsFiboDeviation3, 6,y); } return(0); } int i,k,counted_bars=IndicatorCounted(); double deviation; double sum,oldval,newres; //---- if(Bars<=BandsPeriod) return(0); //---- initial zero if(counted_bars<1) for(i=1;i<=BandsPeriod;i++) { MovingBuffer[Bars-i]=EMPTY_VALUE; UpperBuffer1[Bars-i]=EMPTY_VALUE; LowerBuffer1[Bars-i]=EMPTY_VALUE; UpperBuffer2[Bars-i]=EMPTY_VALUE; LowerBuffer2[Bars-i]=EMPTY_VALUE; UpperBuffer3[Bars-i]=EMPTY_VALUE; LowerBuffer3[Bars-i]=EMPTY_VALUE; } //---- int limit=Bars-counted_bars; if(counted_bars>0) limit++; for(i=0; i<limit; i++) MovingBuffer[i]=iMA(NULL,0,BandsPeriod,BandsMAMethod,0,PRICE_CLOSE,i); //---- i=Bars-BandsPeriod+1; if(counted_bars>BandsPeriod-1) i=Bars-counted_bars-1; while(i>=0) { sum=0.0; k=i+BandsPeriod-1; oldval=MovingBuffer[i]; while(k>=i) { newres=Close[k]-oldval; sum+=newres*newres; k--; } deviation=BandsFiboDeviation1*MathSqrt(sum/BandsPeriod); UpperBuffer1[i]=oldval+deviation; LowerBuffer1[i]=oldval-deviation; deviation=BandsFiboDeviation2*MathSqrt(sum/BandsPeriod); UpperBuffer2[i]=oldval+deviation; LowerBuffer2[i]=oldval-deviation; deviation=BandsFiboDeviation3*MathSqrt(sum/BandsPeriod); UpperBuffer3[i]=oldval+deviation; LowerBuffer3[i]=oldval-deviation; i--; } //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Series array that contains close prices for each bar
Indicator Curves created:
Indicators Used:
Moving average indicator
Custom Indicators Used:
IndicatorFileName
Order Management characteristics:
Other Features: