Bollinger bands breakout Indicator For MT5
Bollinger bands breakout Indicator For MT5 एक बहुत ही सरल विचार पर काम करता है। सबसे पहले, मानक विचलन के साथ सरल चलती औसत गणना की मदद से बैंड बनाए जाते हैं। मूल्य चार्ट को बारीकी से देखने से, आप ऊपरी और निचले बैंड पर छोटे चिह्नों को नोटिस करेंगे जब कीमत गिरती है।
बाजार तब किया जाता है जब बोलिंगर बैंड के ऊपर कीमत बंद हो जाती है। लेकिन व्यापारियों को बाजार की अस्थिरता के आधार पर समय सीमा का सावधानीपूर्वक चयन करना चाहिए क्योंकि बहुत कुछ इस पर निर्भर करता है। उदाहरण के लिए, यदि अस्थिरता अधिक है, तो डी 1 या साप्ताहिक जैसे बड़े समय सीमा पर भरोसा करना अनिवार्य है।
इसके विपरीत, जब अस्थिरता कम हो जाती है, तो व्यापारियों को छोटे समय सीमा के आंकड़ों को देखने की आवश्यकता होती है। लेकिन छोटे समय सीमा के उपयोगकर्ता को मूल्य कार्रवाई संकेतों पर भरोसा करना चाहिए। जब तक वे ऐसा नहीं करते, वे कई झूठे संकेतों से निपटने जा रहे हैं। और हमेशा प्रमुख समाचार डेटा के बारे में पता होना चाहिए क्योंकि ऐसी महत्वपूर्ण वित्तीय घटनाओं पर प्रमुख ब्रेकआउट होता है।
Bollinger bands breakout Indicator For MT5 स्थापित करना
आपके द्वारा उपर्युक्त फ़ॉर्म के माध्यम से संकेतक डाउनलोड करने के बाद आपको ज़िप-फ़ाइल को अनज़िप करना होगा। तो फिर तुम फाइल कॉपी करने की जरूरत है 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
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);
}
//------------------------------------------------------------------