Fibonacci Auto Channel Indicator For MT5
Table Of Contents:
- Fibonacci Auto Channel Indicator For MT5
- Installing the Fibonacci Auto Channel Indicator For MT5
- Parameters of the Fibonacci Auto Channel Indicator For MT5
- Buffers of the Fibonacci Auto Channel Indicator For MT5
- Main Parts Of The Code
The Fibonacci Auto Channel Indicator For MT5 looks at the configured period and detects the highest high and the lowest low of that period. Based on these values the indicator then calculates the fibonacci retracement values. The indicator draws the values as a channel with green and orange color.
Installing the Fibonacci Auto Channel Indicator For MT5
After you downloaded the indicator via the form above you need to unzip the zip-file. Then you need to copy the file Fibonacci_auto_channel.mq5 into the folder MQL5\Indicators of your MT5 installation. After that please restart MT5 and then you will be able to see the indicator in the list of indicators.
Parameters of the Fibonacci Auto Channel Indicator For MT5
The Fibonacci Auto Channel Indicator For MT5 has 1 parameters to configure.
input int HighLowPeriod = 50; // High/low period
Buffers of the Fibonacci Auto Channel Indicator For MT5
The Fibonacci Auto Channel Indicator For MT5 provides 9 buffers.
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,bufferUpc,INDICATOR_COLOR_INDEX); SetIndexBuffer( 6,bufferDn ,INDICATOR_DATA); SetIndexBuffer(7,bufferDnc,INDICATOR_COLOR_INDEX); SetIndexBuffer( 8,bufferMe ,INDICATOR_DATA); SetIndexBuffer( 9,lev1 ,INDICATOR_DATA); SetIndexBuffer(10,lev2 ,INDICATOR_DATA); SetIndexBuffer(11,lev3 ,INDICATOR_DATA); SetIndexBuffer(12,lev4 ,INDICATOR_DATA);
Main Parts Of The Code
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[]) { if (Bars(_Symbol,_Period) lt rates_total) return(-1); for (int i=(int)MathMax(prev_calculated-1,0); i lt rates_total && !IsStopped(); i++) { double hh = high[i]; double ll = low[i]; for (int k=1; k lt HighLowPeriod && (i-k) gt =0; k++) { hh = MathMax(hh,high[i-k]); ll = MathMin(ll,low [i-k]); } double rng = hh-ll; bufferUp[i] = hh; bufferDn[i] = ll; bufferMe[i] = (hh+ll)/2; lev1[i] = ll+0.236*rng; lev2[i] = ll+0.382*rng; lev3[i] = ll+0.618*rng; lev4[i] = ll+0.764*rng; fupd[i] = bufferMe[i]; fupu[i] = bufferUp[i]; fdnu[i] = bufferMe[i]; fdnd[i] = bufferDn[i]; if (i gt 0) { bufferUpc[i] = bufferUpc[i-1]; bufferDnc[i] = bufferDnc[i-1]; // // // // // if (bufferUp[i] gt bufferUp[i-1]) bufferUpc[i] = 0; if (bufferUp[i] lt bufferUp[i-1]) bufferUpc[i] = 1; if (bufferDn[i] gt bufferDn[i-1]) bufferDnc[i] = 0; if (bufferDn[i] lt bufferDn[i-1]) bufferDnc[i] = 1; } } return(rates_total); }