Bollinger bands breakout Indicator For MT5

Bollinger bands breakout Indicator For MT5

Bollinger bands breakout Indicator For MT5 fungerer på en veldig enkel idé. Først av alt er bandene opprettet ved hjelp av enkel beregning av glidende gjennomsnitt sammen med standardavviket. Ved å merke prisoversikten nøye, vil du merke små markeringer i øvre og nedre bånd når prisen synker.

Markedet gjøres når prisen stenger over Bollinger-bandet. Men de næringsdrivende bør nøye velge tidsramme basert på markedsvolatilitet, ettersom mye avhenger av det. For eksempel, hvis volatiliteten er høyere, er det viktig å stole på den større tidsrammen som D1 eller den ukentlige.

Tvert imot, når volatiliteten opphører, trenger handelsmennene å se på de mindre tidsramme-dataene. Men brukeren av den mindre tidsrammen bør stole på prisaksjonssignalene. Med mindre de gjør det, kommer de til å takle for mange falske signaler. Og vær alltid oppmerksom på de viktigste nyhetsdataene da det store utbruddet oppstår på slike kritiske økonomiske hendelser.

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

 

Installere Bollinger bands breakout Indicator For MT5

Etter at du har lastet ned indikatoren via skjemaet over, må du pakke ut zip-filen. Deretter må du kopiere filen Bollinger bands breakout.mq5 til mappen MQL5Indicators for din MT5 installasjon. Etter det kan du starte MT5 på nytt, så vil du kunne se indikatoren i listen over indikatorer.

Parametere for Bollinger bands breakout Indicator For MT5

Bollinger bands breakout Indicator For MT5 har 5 parametere som skal konfigureres.

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

Buffere av Bollinger bands breakout Indicator For MT5

Bollinger bands breakout Indicator For MT5 inneholder 9 buffere.

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);

Hoveddeler av koden

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.