Quantile Bands Indicator For MT5
Table Of Contents:
- Quantile Bands Indicator For MT5
- Installation des Quantile Bands Indicator For MT5
- Parameter des Quantile Bands Indicator For MT5
- Puffer des Quantile Bands Indicator For MT5
- Hauptteile des Codes
Der Quantile Bands Indicator For MT5 ist ein brillant erstelltes technisches Handelsinstrument, das die Haupthandelsaktivität eines Vermögenswerts in ein dreischichtiges Band kanalisiert, das auf der Grundlage von drei Quantilwerten berechnet wird. Diese Quantilwerte werden durch eine statistische Berechnung abgeleitet, die berechnet wird Schnittpunkte durch Teilen des Bereichs einer Wahrscheinlichkeitsverteilung in Intervalle mit gleichen Wahrscheinlichkeiten. Dieser Kanalindikator ist eine großartige Ressource, da die meisten überverkauften und überkauften Erkennungsoszillatoren normalerweise in einem separaten Fenster unter dem aktiven Hauptdiagramm dargestellt werden. Mit diesem Indikator ist es jedoch so, als hätte man ein überverkauftes und überkauftes Analysetool direkt auf dem Handelsdiagramm Dies überlagert die Preisaktion selbst, wobei die Preisaktion für die Mustererkennung und technische Analyse immer noch deutlich sichtbar ist. Wenn Händler sehen, dass die Preisaktion über das obere Band des Kanals hinaus und darüber hinaus handelt, können sie dies als Umkehrsignal behandeln, um einen Verkaufshandel mit dem im mittleren Band festgelegten Take-Profit-Ziel zu eröffnen - immer dann, wenn die Preisaktion unter und über das obere Band hinausgeht Unteres Band, dann kann der Händler wählen, einen Kaufhandel in die entgegengesetzte Richtung zu eröffnen, wobei das mittlere Band als TP-Ziel festgelegt ist.
Installation des Quantile Bands Indicator For MT5
Nachdem Sie den Indikator über das obige Formular heruntergeladen haben, müssen Sie die Zip-Datei entpacken. Anschließend müssen Sie die Datei Quantile_bands_1.3.mq5 in den Ordner MQL5Indicators Ihrer MT5 Installation kopieren. Starten Sie danach MT5 neu und Sie können den Indikator in der Liste der Indikatoren sehen.
Parameter des Quantile Bands Indicator For MT5
Der Quantile Bands Indicator For MT5 verfügt über 7 zu konfigurierende Parameter.
input int Periods = 35; // Quantile period input enPrices PriceUp = pr_high; // Price to use for high quantile value input enPrices PriceMid = pr_median; // Price to use for middle quantile value input enPrices PriceDown = pr_low; // Price to use for low quantile value input double UpperBandPercent = 90; // Upper band percent input double LowerBandPercent = 10; // Lower band percent input double MedianBandPercent = 50; // Median percent
Puffer des Quantile Bands Indicator For MT5
Der Quantile Bands Indicator For MT5 stellt 5 Puffer bereit.
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);
Hauptteile des Codes
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[]) { for (int i=(int)MathMax(prev_calculated-1,0); i lt rates_total && !IsStopped(); i++) { bufferUp[i] = iQuantile(getPrice(PriceUp ,open,close,high,low,i,rates_total,0),Periods,UpperBandPercent ,i,rates_total,0); bufferDn[i] = iQuantile(getPrice(PriceDown,open,close,high,low,i,rates_total,1),Periods,LowerBandPercent ,i,rates_total,1); bufferMe[i] = iQuantile(getPrice(PriceMid ,open,close,high,low,i,rates_total,2),Periods,MedianBandPercent,i,rates_total,2); 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); } //------------------------------------------------------------------ // //------------------------------------------------------------------ // // // // // #define quantileInstances 3 double quantileValues[][quantileInstances]; double quantileArray[]; double iQuantile(double value, int period, double qp, int i, int bars, int instanceNo=0) { if (ArrayRange(quantileArray ,0)!=period) ArrayResize(quantileArray ,period); if (ArrayRange(quantileValues,0)!=bars) ArrayResize(quantileValues,bars); quantileValues[i][instanceNo] = value; for(int k=0; k lt period && (i-k) gt =0; k++) quantileArray[k] = quantileValues[i-k][instanceNo]; ArraySort(quantileArray); // // // // // double index = (period-1)*qp/100.00; int ind = (int)index; double delta = index - ind; if (ind == NormalizeDouble(index,5)) return( quantileArray[ind]); else return((1.0-delta)*quantileArray[ind]+delta*quantileArray[ind+1]); } //------------------------------------------------------------------ // //------------------------------------------------------------------ // // // // // // #define priceInstances 3 double workHa[][priceInstances*4]; double getPrice(int tprice, const double& open[], const double& close[], const double& high[], const double& low[], int i,int bars, int instanceNo=0) { if (tprice gt =pr_haclose) { if (ArrayRange(workHa,0)!= bars) ArrayResize(workHa,bars); instanceNo*=4; int r = i; // // // // // double haOpen; if (r gt 0) haOpen = (workHa[r-1][instanceNo+2] + workHa[r-1][instanceNo+3])/2.0; else haOpen = (open[i]+close[i])/2; double haClose = (open[i] + high[i] + low[i] + close[i]) / 4.0; double haHigh = MathMax(high[i], MathMax(haOpen,haClose)); double haLow = MathMin(low[i] , MathMin(haOpen,haClose)); if(haOpen lt haClose) { workHa[r][instanceNo+0] = haLow; workHa[r][instanceNo+1] = haHigh; } else { workHa[r][instanceNo+0] = haHigh; workHa[r][instanceNo+1] = haLow; } workHa[r][instanceNo+2] = haOpen; workHa[r][instanceNo+3] = haClose; // // // // // switch (tprice) { case pr_haclose: return(haClose); case pr_haopen: return(haOpen); case pr_hahigh: return(haHigh); case pr_halow: return(haLow); case pr_hamedian: return((haHigh+haLow)/2.0); case pr_hamedianb: return((haOpen+haClose)/2.0); case pr_hatypical: return((haHigh+haLow+haClose)/3.0); case pr_haweighted: return((haHigh+haLow+haClose+haClose)/4.0); case pr_haaverage: return((haHigh+haLow+haClose+haOpen)/4.0); case pr_hatbiased: if (haClose gt haOpen) return((haHigh+haClose)/2.0); else return((haLow+haClose)/2.0); } } // // // // // switch (tprice) { case pr_close: return(close[i]); case pr_open: return(open[i]); case pr_high: return(high[i]); case pr_low: return(low[i]); case pr_median: return((high[i]+low[i])/2.0); case pr_medianb: return((open[i]+close[i])/2.0); case pr_typical: return((high[i]+low[i]+close[i])/3.0); case pr_weighted: return((high[i]+low[i]+close[i]+close[i])/4.0); case pr_average: return((high[i]+low[i]+close[i]+open[i])/4.0); case pr_tbiased: if (close[i] gt open[i]) return((high[i]+close[i])/2.0); else return((low[i]+close[i])/2.0); } return(0); }