Bollinger bands breakout Indicator For MT5

Bollinger bands breakout Indicator For MT5

Bollinger bands breakout Indicator For MT5 hoạt động trên một ý tưởng rất đơn giản. Trước hết, các dải được tạo ra với sự trợ giúp của phép tính trung bình di chuyển đơn giản cùng với độ lệch chuẩn. Bằng cách chú ý chặt chẽ biểu đồ giá, bạn sẽ nhận thấy các dấu nhỏ ở dải trên và dưới khi giá giảm.

Thị trường được thực hiện khi giá đóng cửa trên dải bollinger. Nhưng các nhà giao dịch nên cẩn thận chọn khung thời gian dựa trên biến động thị trường vì rất nhiều phụ thuộc vào nó. Ví dụ, nếu độ biến động cao hơn, bắt buộc phải dựa vào khung thời gian lớn hơn như D1 hoặc hàng tuần.

Ngược lại, khi biến động chấm dứt, các nhà giao dịch cần xem xét dữ liệu khung thời gian nhỏ hơn. Nhưng người sử dụng khung thời gian nhỏ hơn nên dựa vào các tín hiệu hành động giá. Trừ khi họ làm như vậy, họ sẽ xử lý quá nhiều tín hiệu sai. Và luôn luôn nhận thức được các dữ liệu tin tức lớn khi đột phá lớn xảy ra trong các sự kiện tài chính quan trọng như vậy.

FREE Bollinger bands breakout Indicator

Download the FREE Bollinger bands breakout Indicator for MT5.

To receive my email 100% sure: 
Put my email on your whitelist!

 

Partially Automated Trading Besides Your Day Job

Alerts In Real-Time When Divergences Occur

 

Cài đặt Bollinger bands breakout Indicator For MT5

Sau khi bạn tải xuống chỉ báo qua biểu mẫu ở trên, bạn cần giải nén tệp zip. Sau đó, bạn cần sao chép tệp Bollinger bands breakout.mq5 vào thư mục MQL5Indicators cài đặt MT5 của bạn. Sau đó, vui lòng khởi động lại MT5 và sau đó bạn sẽ có thể thấy chỉ báo trong danh sách các chỉ báo.

Các tham số của Bollinger bands breakout Indicator For MT5

Bollinger bands breakout Indicator For MT5 có các tham số 5 để cấu hình.

input int                 inpPeriod       = 20;          // Bollinger bands period
input ENUM_APPLIED_PRICE  inpPrice        = PRICE_CLOSE; // Price
input double              inpDeviations   = 2.5;         // Bollinger bands deviations
input double              inpZonesPercent = 20;          // Zones percent
input enDevType           inpDevType      = dev_regular; // Standard deviations type

Bộ đệm của Bollinger bands breakout Indicator For MT5

Bollinger bands breakout Indicator For MT5 cung cấp bộ đệm 9 .

SetIndexBuffer(0,fupu    ,INDICATOR_DATA);
SetIndexBuffer(1,fupd    ,INDICATOR_DATA);
SetIndexBuffer(2,fdnu    ,INDICATOR_DATA);
SetIndexBuffer(3,fdnd    ,INDICATOR_DATA);
SetIndexBuffer(4,bufferUp,INDICATOR_DATA);
SetIndexBuffer(5,bufferDn,INDICATOR_DATA);
SetIndexBuffer(6,bufferMe,INDICATOR_DATA);
SetIndexBuffer(7,breakup ,INDICATOR_DATA); PlotIndexSetInteger(5,PLOT_ARROW,217); PlotIndexSetInteger(5,PLOT_ARROW_SHIFT,-10);
SetIndexBuffer(8,breakdn ,INDICATOR_DATA); PlotIndexSetInteger(6,PLOT_ARROW,218); PlotIndexSetInteger(6,PLOT_ARROW_SHIFT, 10);

Các bộ phận chính của bộ luật

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 _copyCount = rates_total-prev_calculated+1; if (_copyCount gt rates_total) _copyCount=rates_total;
         if (CopyBuffer(_maHandle,0,0,_copyCount,bufferMe)!=_copyCount) return(prev_calculated);

   //
   //---
   //

   int i= prev_calculated-1; if (i lt 0) i=0; for (; i lt rates_total && !_StopFlag; i++)
   {
      double price; _setPrice(inpPrice,price,i);
      double deviation = iStdDeviation.calculate(price,i,rates_total);
      
      //
      //---
      //

      bufferUp[i] = bufferMe[i]+deviation*inpDeviations;
      bufferDn[i] = bufferMe[i]-deviation*inpDeviations;
      fupd[i]     = bufferMe[i]+deviation*inpDeviations*_bandsFillZone; fupu[i] = bufferUp[i]; 
      fdnu[i]     = bufferMe[i]-deviation*inpDeviations*_bandsFillZone; fdnd[i] = bufferDn[i]; 
      breakup[i]  = (close[i] gt bufferUp[i]) ? high[i] : EMPTY_VALUE;
      breakdn[i]  = (close[i] lt bufferDn[i]) ? low[i]  : EMPTY_VALUE;
   }         
   return(i);         
}

//------------------------------------------------------------------
// Custom function(s)
//------------------------------------------------------------------
//
//---
//

class cStdDeviation
{
   private :
      int    m_period;
      double m_periodDiv;
      int    m_arraySize;
      bool   m_isSample;
         struct sStdStruct
         {
            double price;
            double price2;
            double sum;
            double sum2;
         };
      sStdStruct m_array[];
   public:
      cStdDeviation() : m_arraySize(-1) {  }
     ~cStdDeviation()                   { ArrayFree(m_array); }

      ///
      ///
      ///

      void init(int period, bool isSample)
      {
         m_period    = (period gt 1) ? period : 1;
         m_isSample  = isSample;
         m_periodDiv = MathMax(m_period-m_isSample,1);
      }
      
      double calculate(double price, int i, int bars)
      {
         if (m_arraySize lt bars) {m_arraySize=ArrayResize(m_array,bars+500); if (m_arraySize lt bars) return(0); }

            //
            //
            //
            
            m_array[i].price =price;
            m_array[i].price2=price*price;
            
            //
            //---
            //
            
            if (i gt m_period)
            {
               m_array[i].sum  = m_array[i-1].sum +m_array[i].price -m_array[i-m_period].price;
               m_array[i].sum2 = m_array[i-1].sum2+m_array[i].price2-m_array[i-m_period].price2;
            }
            else  
            {
               m_array[i].sum  = m_array[i].price;
               m_array[i].sum2 = m_array[i].price2; 
               for(int k=1; k lt m_period && i gt =k; k++) 
               {
                  m_array[i].sum  += m_array[i-k].price; 
                  m_array[i].sum2 += m_array[i-k].price2; 
               }                  
            }         
            return (MathSqrt((m_array[i].sum2-m_array[i].sum*m_array[i].sum/(double)m_period)/m_periodDiv));
      }
};
cStdDeviation iStdDeviation;

//
//---
//

bool _checkHandle(int _handle, string _description)
{
   static int  _chandles[];
          int  _size   = ArraySize(_chandles);
          bool _answer = (_handle!=INVALID_HANDLE);
          if  (_answer)
               { ArrayResize(_chandles,_size+1); _chandles[_size]=_handle; }
          else { for (int i=_size-1; i gt =0; i--) IndicatorRelease(_chandles[i]); ArrayResize(_chandles,0); Alert(_description+" initialization failed"); }
   return(_answer);
}  
//------------------------------------------------------------------

 

About Me

I'm Mike Semlitsch the owner of PerfectTrendSystem.com. My trading career started in 2007. Since 2013 I have helped thousands of traders to take their trading to the next level. Many of them are now constantly profitable traders. 

The following performance was achieved by me while trading live in front of hundreds of my clients:

Connect With Me:  

Results From 5 Months!
This service starts soon! Be the first who get's notified when it begins!

This FREE Indicator Can Transform
Your Trading!

FREE Indicator + Telegram Group


Request the Ultimate Double Top/Bottom Indicator which is used by 10,000+ traders.