Bollinger bands breakout Indicator For MT5

Bollinger bands breakout Indicator For MT5

يعمل Bollinger bands breakout Indicator For MT5 على فكرة بسيطة للغاية. بادئ ذي بدء ، يتم إنشاء النطاقات بمساعدة حساب متوسط متحرك بسيط مع الانحراف المعياري. من خلال ملاحظة مخطط السعر عن كثب ، ستلاحظ علامات صغيرة في النطاق العلوي والسفلي عندما ينخفض السعر.

يتم السوق عندما يغلق السعر فوق البولنجر باند. ولكن يجب على التجار تحديد الإطار الزمني بعناية بناءً على تقلبات السوق حيث يعتمد الكثير على ذلك. على سبيل المثال ، إذا كان معدل التذبذب أعلى ، فمن الضروري الاعتماد على الإطار الزمني الأكبر مثل D1 أو الأسبوعي.

على العكس من ذلك ، عندما يتوقف التقلب ، يحتاج المتداولون إلى النظر إلى بيانات الإطار الزمني الأصغر. ولكن يجب أن يعتمد مستخدم الإطار الزمني الأصغر على إشارات حركة السعر. ما لم يفعلوا ذلك ، فسوف يتعاملون مع الكثير من الإشارات الخاطئة. وكن دائمًا على دراية ببيانات الأخبار الرئيسية حيث يحدث الاختراق الرئيسي في مثل هذه الأحداث المالية الحرجة.

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

 

تثبيت Bollinger bands breakout Indicator For MT5

بعد تنزيل المؤشر عبر النموذج أعلاه ، ستحتاج إلى فك ضغط ملف zip. ثم تحتاج إلى نسخ الملف Bollinger bands breakout.mq5 في المجلد MQL5Indicators تثبيت MT5 . بعد ذلك ، يرجى إعادة تشغيل MT5 وبعد ذلك ستتمكن من رؤية المؤشر في قائمة المؤشرات.

معلمات Bollinger bands breakout Indicator For MT5

و Bollinger bands breakout Indicator For MT5 ديه 5 المعلمات إلى تكوين.

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

مخازن Bollinger bands breakout Indicator For MT5

و Bollinger bands breakout Indicator For MT5 يوفر 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);

الأجزاء الرئيسية من المدونة

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.