bollinger_fibo_bands

Author: Copyright 2017, Sergey Pavlov (DC2008)
Indicators Used
Bollinger bands indicator
0 Views
0 Downloads
0 Favorites
bollinger_fibo_bands
ÿþ//+------------------------------------------------------------------+

//|                                         bollinger fibo bands.mq5 |

//|                           Copyright 2017, Sergey Pavlov (DC2008) |

//|                              http://www.mql5.com/ru/users/dc2008 |

//+------------------------------------------------------------------+

#property copyright     "Copyright 2017, Sergey Pavlov (DC2008)"

#property link          "http://www.mql5.com/ru/users/dc2008"

#property version       "1.00"

#property description   "Trade channel for the indicator and the iBand."

#property description   "The Bollinger bands are located at extended Fibonacci levels."

//--- K2>48BL 8=48:0B>@ 2 >:=> 3@0D8:0

#property indicator_chart_window

//--- >;8G5AB2> 1CD5@>2 4;O @0AG5B0 8=48:0B>@0

#property indicator_buffers 15

//--- >;8G5AB2> 3@0D8G5A:8E A5@89 2 8=48:0B>@5

#property indicator_plots   11

//--- plot 1

#property indicator_label1  "Upper bands: fibo 100% - 138.2%"

#property indicator_type1   DRAW_FILLING

#property indicator_color1  C'255,204,204'

//--- plot 2

#property indicator_label2  "Lower bands: fibo 100% - 138.2%"

#property indicator_type2   DRAW_FILLING

#property indicator_color2  C'204,204,255'

//--- plot 3

#property indicator_label3  "Upper bands: fibo 138.2% - 161.8%"

#property indicator_type3   DRAW_FILLING

#property indicator_color3  C'254,153,153'

//--- plot 4

#property indicator_label4  "Lower bands: fibo 138.2% - 161.8%"

#property indicator_type4   DRAW_FILLING

#property indicator_color4  C'153,153,254'

//--- plot 5

#property indicator_label5  "Upper bands: fibo 261.8%"

#property indicator_type5   DRAW_LINE

#property indicator_color5  clrRed

#property indicator_style5  STYLE_DOT

#property indicator_width5  1

//--- plot 6

#property indicator_label6  "Lower  bands: fibo 261.8%"

#property indicator_type6   DRAW_LINE

#property indicator_color6  clrBlue

#property indicator_style6  STYLE_DOT

#property indicator_width6  1

//--- plot 7

#property indicator_label7  "Upper bands: fibo 38.2%"

#property indicator_type7  DRAW_LINE

#property indicator_color7  clrRed

#property indicator_style7  STYLE_DOT

#property indicator_width7  1

//--- plot 8

#property indicator_label8  "Lower bands: fibo 38.2%"

#property indicator_type8   DRAW_LINE

#property indicator_color8  clrBlue

#property indicator_style8  STYLE_DOT

#property indicator_width8  1

//--- plot 9

#property indicator_label9  "Upper bands: fibo 61.8%"

#property indicator_type9   DRAW_LINE

#property indicator_color9  clrRed

#property indicator_style9  STYLE_DOT

#property indicator_width9  1

//--- plot 10

#property indicator_label10  "Lower bands: fibo 61.8%"

#property indicator_type10   DRAW_LINE

#property indicator_color10  clrBlue

#property indicator_style10  STYLE_DOT

#property indicator_width10  1

//--- plot 11

#property indicator_label11  "Middle line"

#property indicator_type11   DRAW_LINE

#property indicator_color11  clrBlue

#property indicator_style11  STYLE_SOLID

#property indicator_width11  2

//---

input int                  BB_period=80;                 // Moving average period

input double               BB_deviation=2.0;             // Number of standard deviations 

input ENUM_APPLIED_PRICE   BB_applied_price=PRICE_CLOSE; // Price type 

input int                  BB_bands_shift=0;             // shift 

input int                  history=100;                  // History depth

//--- ?5@5<5==0O 4;O E@0=5=8O EM=4;0 8=48:0B>@0 iBands 

int         handle;

//---- indicator buffers

double         UpperBuffer[];

double         LowerBuffer[];

double         MiddleBuffer[];

//---

double         Buffer1[];

double         Buffer2[];

double         Buffer3[];

double         Buffer4[];

double         Buffer5[];

double         Buffer6[];

double         Buffer7[];

double         Buffer8[];

double         Buffer9[];

double         Buffer10[];

double         Buffer11[];

double         Buffer12[];

double         Buffer13[];

double         Buffer14[];

double         Buffer15[];

//---  0AH8@5==K5 C@>2=8 $81>=0GG8

double         fibo_38;

double         fibo_62;

double         fibo_138;

double         fibo_162;

double         fibo_262;

int            sd;

int            count;

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- indicator buffers mapping

   ArraySetAsSeries(Buffer1,true);

   ArraySetAsSeries(Buffer2,true);

   ArraySetAsSeries(Buffer3,true);

   ArraySetAsSeries(Buffer4,true);

   ArraySetAsSeries(Buffer5,true);

   ArraySetAsSeries(Buffer6,true);

   ArraySetAsSeries(Buffer7,true);

   ArraySetAsSeries(Buffer8,true);

   ArraySetAsSeries(Buffer9,true);

   ArraySetAsSeries(Buffer10,true);

   ArraySetAsSeries(Buffer11,true);

   ArraySetAsSeries(Buffer12,true);

   ArraySetAsSeries(Buffer13,true);

   ArraySetAsSeries(Buffer14,true);

   ArraySetAsSeries(Buffer15,true);

//---

   SetIndexBuffer(0,Buffer1,INDICATOR_DATA);

   SetIndexBuffer(1,Buffer2,INDICATOR_DATA);

   SetIndexBuffer(2,Buffer3,INDICATOR_DATA);

   SetIndexBuffer(3,Buffer4,INDICATOR_DATA);

   SetIndexBuffer(4,Buffer5,INDICATOR_DATA);

   SetIndexBuffer(5,Buffer6,INDICATOR_DATA);

   SetIndexBuffer(6,Buffer7,INDICATOR_DATA);

   SetIndexBuffer(7,Buffer8,INDICATOR_DATA);

   SetIndexBuffer(8,Buffer9,INDICATOR_DATA);

   SetIndexBuffer(9,Buffer10,INDICATOR_DATA);

   SetIndexBuffer(10,Buffer11,INDICATOR_DATA);

   SetIndexBuffer(11,Buffer12,INDICATOR_DATA);

   SetIndexBuffer(12,Buffer13,INDICATOR_DATA);

   SetIndexBuffer(13,Buffer14,INDICATOR_DATA);

   SetIndexBuffer(14,Buffer15,INDICATOR_DATA);

//--- A>74048< EM=4; 8=48:0B>@0 

   handle=iBands(_Symbol,_Period,BB_period,BB_bands_shift,BB_deviation,BB_applied_price);

   ArraySetAsSeries(MiddleBuffer,true);

   ArraySetAsSeries(UpperBuffer,true);

   ArraySetAsSeries(LowerBuffer,true);

//---  0AH8@5==K5 C@>2=8 $81>=0GG8

   fibo_38=55.0/144.0;

   fibo_62=89.0/144.0;

   fibo_138=2.0-fibo_62;

   fibo_162=233.0/144.0;

   fibo_262=377.0/144.0;

//---

   sd=history;

   count=history+BB_period;

   ChartRedraw(0);

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

   int rt=rates_total-sd;

   for(int i=0; i<15; i++)

      PlotIndexSetInteger(i,PLOT_DRAW_BEGIN,rt);

   if(count>rates_total) sd=rates_total-BB_period;

//---

   CopyBuffer(handle,0,0,count,MiddleBuffer);

   CopyBuffer(handle,1,0,count,UpperBuffer);

   CopyBuffer(handle,2,0,count,LowerBuffer);

//---

   double mid;

   double std;

   for(int i=0;i<count;i++)

     {

      mid=MiddleBuffer[i];

      std=UpperBuffer[i]-mid;



      Buffer1[i]=mid+std*fibo_138;  // Upper bands 138%

      Buffer2[i]=UpperBuffer[i];    // Upper bands 100%



      Buffer3[i]=LowerBuffer[i];    // Lower bands 100%

      Buffer4[i]=mid-std*fibo_138;  // Upper bands 138%



      Buffer5[i]=mid+std*fibo_162;  // Upper bands 162%

      Buffer6[i]=mid+std*fibo_138;  // Upper bands 138%



      Buffer7[i]=mid-std*fibo_138;  // Lower bands 138%

      Buffer8[i]=mid-std*fibo_162;  // Lower bands 162%



      Buffer9[i]=mid+std*fibo_262;  // Upper bands 262%

      Buffer10[i]=mid-std*fibo_262; // Lower bands 262%

      Buffer11[i]=mid+std*fibo_38;  // Upper bands 61.8%

      Buffer12[i]=mid-std*fibo_38;  // Lower bands 61.8%

      Buffer13[i]=mid+std*fibo_62;  // Upper bands 38.2%

      Buffer14[i]=mid-std*fibo_62;  // Lower bands 38.2%

      Buffer15[i]=mid;              // Middle bands

     }

//--- return value of prev_calculated for next call

   return(rates_total);

  }

//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---