Quantile Bands Indicator For MT5
Table Of Contents:
- Quantile Bands Indicator For MT5
- تثبيت Quantile Bands Indicator For MT5
- معلمات Quantile Bands Indicator For MT5
- مخازن Quantile Bands Indicator For MT5
- الأجزاء الرئيسية من المدونة
يعد Quantile Bands Indicator For MT5 أداة تداول فنية تم إنشاؤها ببراعة والتي توجه نشاط التداول الرئيسي للأصل إلى نطاق ثلاثي الطبقات يتم حسابه على أساس استخدام ثلاث قيم كمية - يتم اشتقاق هذه القيم الكمية من خلال حساب إحصائي يحسب نقاط القطع بقسمة نطاق التوزيع الاحتمالي إلى فترات لها احتمالات متساوية. يعد مؤشر القناة هذا موردًا رائعًا لأنه نظرًا لأن معظم مذبذبات الكشف عن ذروة البيع والبيع المفرط يتم رسمها عادةً في نافذة منفصلة أسفل المخطط النشط الرئيسي - ولكن مع هذا المؤشر ، يبدو الأمر وكأنه يحتوي على أداة تحليل ذروة البيع والبيع المفرط مباشرة على مخطط التداول والذي يضاف إلى حركة السعر نفسها مع حركة السعر التي لا تزال مرئية بوضوح للتعرف على الأنماط والتحليل الفني. عندما يرى المتداولون أن حركة السعر تتداول خارج النطاق العلوي للقناة وفوقه ، فقد يتعاملون مع ذلك كإشارة انعكاس لفتح صفقة بيع مع تحديد هدف جني الربح عند الشريط الأوسط - كلما انتقلت حركة السعر إلى ما دون بعد ذلك ، قد يختار المتداول فتح صفقة شراء في الاتجاه المعاكس مع تعيين النطاق الأوسط كهدف TP.
تثبيت Quantile Bands Indicator For MT5
بعد تنزيل المؤشر عبر النموذج أعلاه ، ستحتاج إلى فك ضغط ملف zip. ثم تحتاج إلى نسخ الملف Quantile_bands_1.3.mq5 في المجلد MQL5Indicators تثبيت MT5 . بعد ذلك ، يرجى إعادة تشغيل 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); }