Quantile Bands Indicator For MT5

Quantile Bands Indicator For MT5

Table Of Contents:

  1. Quantile Bands Indicator For MT5
  2. 安装Quantile Bands Indicator For MT5
  3. Quantile Bands Indicator For MT5参数
  4. Quantile Bands Indicator For MT5缓冲区
  5. 守则主要部分

Quantile Bands Indicator For MT5Quantile Bands Indicator For MT5是一种出色创建的技术交易工具,它将资产的主要交易活动引导到三层带中,该三层带是根据使用三个分位数来计算的-这些分位数是通过统计计算得出的,通过将概率分布的范围划分为具有相等概率的区间来达到临界点。该通道指标是一个很好的资源,因为对于大多数超卖和超买的检测振荡器,它们通常被绘制在主活跃图表下方的单独窗口中;但是,使用该指标,就像在交易图表上直接具有超卖和超买分析工具一样。它叠加在价格行为本身上,对于模式识别和技术分析,价格行为仍然清晰可见。当交易者看到价格行为在通道的上限之上和之上进行交易时,他们可以将其视为反向交易,以将卖出目标设定在中间波段的情况下进行卖出交易-每当价格行为低于或超过上限时。较低的波段,那么交易者可以选择以相反的方向开立买入交易,而将中间的波段设为目标价格。

FREE Quantile Bands Indicator

Download the FREE Quantile Bands 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

 

安装Quantile Bands Indicator For MT5

通过上面的表格下载指标后,您需要解压缩zip文件。然后,您需要将文件Quantile_bands_1.3.mq5复制到MT5安装的文件夹MQL5Indicators中。之后,请重启MT5,然后您将能够在指标列表中看到该指标。

Quantile Bands Indicator For MT5参数

Quantile Bands Indicator For MT5具有要配置的7 参数。

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 

Quantile Bands Indicator For MT5缓冲区

Quantile Bands Indicator For MT5提供5 缓冲区。

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

守则主要部分

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

 

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.