ADXVMA Binary Indicator For MT5
Table Of Contents:
- ADXVMA Binary Indicator For MT5
- Installation des ADXVMA Binary Indicator For MT5
- Parameter des ADXVMA Binary Indicator For MT5
- Puffer des ADXVMA Binary Indicator For MT5
- Hauptteile des Codes
Der ADXVMA Binary Indicator For MT5 ist ein sehr einzigartiges Tool, das den Aufwärtstrend mit dem Wert +1 und den Abwärtstrend mit dem Wert -1 definiert. Der Indikator gibt jedoch keine genauen Informationen zur Ausführung der Trades. Dieses Tool funktioniert am besten, wenn Sie den Trailing Stop Loss verwenden, um den Gewinn zu maximieren. Da die Indikatordaten sehr empfindlich auf leichte Preisbewegungen reagieren, müssen Sie lernen, dieses Tool im täglichen und wöchentlichen Zeitrahmen zu verwenden. Unabhängig davon, wie überzeugend das Trade-Setup ist, sollten Sie das Risiko in jedem Trade auf 2% begrenzen. Eröffnen Sie bei Bedarf ein Demo-Konto, um die Verwendung zu erfahren, ohne echtes Geld zu verlieren.
Installation des ADXVMA Binary 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 ADXVMA binary.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 ADXVMA Binary Indicator For MT5
Der ADXVMA Binary Indicator For MT5 verfügt über 2 zu konfigurierende Parameter.
input double inpPeriod = 14; // Period input ENUM_APPLIED_PRICE inpPrice = PRICE_MEDIAN; // Price
Puffer des ADXVMA Binary Indicator For MT5
Der ADXVMA Binary Indicator For MT5 stellt 2 Puffer bereit.
SetIndexBuffer(0,val,INDICATOR_DATA); SetIndexBuffer(1,adxvma,INDICATOR_CALCULATIONS);
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[]) { if(Bars(_Symbol,_Period) lt rates_total) return(prev_calculated); for(int i=(int)MathMax(prev_calculated-1,0); i lt rates_total && !IsStopped(); i++) { adxvma[i]=iAdxvma(getPrice(inpPrice,open,close,high,low,i,rates_total),inpPeriod,i,rates_total); val[i] = (i gt 0) ?(adxvma[i] gt adxvma[i-1]) ? 1 :(adxvma[i] lt adxvma[i-1]) ? -1 : val[i-1]: 0; } return(rates_total); } //+------------------------------------------------------------------+ //| Custom functions | //+------------------------------------------------------------------+ #define _adxVmaInstances 1 #define _adxVmaInstancesSize 7 double adxvmaWork[][_adxVmaInstances*_adxVmaInstancesSize]; #define _adxvmaWprc 0 #define _adxvmaWpdm 1 #define _adxvmaWmdm 2 #define _adxvmaWpdi 3 #define _adxvmaWmdi 4 #define _adxvmaWout 5 #define _adxvmaWval 6 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double iAdxvma(double price,double period,int r,int bars,int instanceNo=0) { if(ArrayRange(adxvmaWork,0)!=bars) ArrayResize(adxvmaWork,bars); instanceNo*=_adxVmaInstancesSize; // //--- // adxvmaWork[r][instanceNo+_adxvmaWprc]=price; if(r lt 1) { adxvmaWork[r][instanceNo+_adxvmaWval]=adxvmaWork[r][instanceNo+_adxvmaWprc]; return(adxvmaWork[r][_adxvmaWval]); } // //--- // double tpdm = 0; double tmdm = 0; double diff = adxvmaWork[r][instanceNo+_adxvmaWprc]-adxvmaWork[r-1][instanceNo+_adxvmaWprc]; if(diff gt 0) tpdm = diff; else tmdm = -diff; adxvmaWork[r][instanceNo+_adxvmaWpdm] = ((period-1.0)*adxvmaWork[r-1][instanceNo+_adxvmaWpdm]+tpdm)/period; adxvmaWork[r][instanceNo+_adxvmaWmdm] = ((period-1.0)*adxvmaWork[r-1][instanceNo+_adxvmaWmdm]+tmdm)/period; // //--- // double trueRange = adxvmaWork[r][instanceNo+_adxvmaWpdm]+adxvmaWork[r][instanceNo+_adxvmaWmdm]; double tpdi = 0; double tmdi = 0; if(trueRange gt 0) { tpdi = adxvmaWork[r][instanceNo+_adxvmaWpdm]/trueRange; tmdi = adxvmaWork[r][instanceNo+_adxvmaWmdm]/trueRange; } adxvmaWork[r][instanceNo+_adxvmaWpdi] = ((period-1.0)*adxvmaWork[r-1][instanceNo+_adxvmaWpdi]+tpdi)/period; adxvmaWork[r][instanceNo+_adxvmaWmdi] = ((period-1.0)*adxvmaWork[r-1][instanceNo+_adxvmaWmdi]+tmdi)/period; // //--- // double tout=0; if((adxvmaWork[r][instanceNo+_adxvmaWpdi]+adxvmaWork[r][instanceNo+_adxvmaWmdi]) gt 0) tout=MathAbs(adxvmaWork[r][instanceNo+_adxvmaWpdi]-adxvmaWork[r][instanceNo+_adxvmaWmdi])/(adxvmaWork[r][instanceNo+_adxvmaWpdi]+adxvmaWork[r][instanceNo+_adxvmaWmdi]); adxvmaWork[r][instanceNo+_adxvmaWout]=((period-1.0)*adxvmaWork[r-1][instanceNo+_adxvmaWout]+tout)/period; // //--- // double thi = MathMax(adxvmaWork[r][instanceNo+_adxvmaWout],adxvmaWork[r-1][instanceNo+_adxvmaWout]); double tlo = MathMin(adxvmaWork[r][instanceNo+_adxvmaWout],adxvmaWork[r-1][instanceNo+_adxvmaWout]); for(int j=2; j lt (int)period && r-j gt =0; j++) { thi = MathMax(adxvmaWork[r-j][instanceNo+_adxvmaWout],thi); tlo = MathMin(adxvmaWork[r-j][instanceNo+_adxvmaWout],tlo); } double vi=0; if((thi-tlo) gt 0) vi=(adxvmaWork[r][instanceNo+_adxvmaWout]-tlo)/(thi-tlo); // //--- // adxvmaWork[r][instanceNo+_adxvmaWval]=((period-vi)*adxvmaWork[r-1][instanceNo+_adxvmaWval]+vi*adxvmaWork[r][instanceNo+_adxvmaWprc])/period; return(adxvmaWork[r][instanceNo+_adxvmaWval]); } // //--- // double getPrice(ENUM_APPLIED_PRICE tprice,const double &open[],const double &close[],const double &high[],const double &low[],int i,int _bars) { if(i gt =0) switch(tprice) { case PRICE_CLOSE: return(close[i]); case PRICE_OPEN: return(open[i]); case PRICE_HIGH: return(high[i]); case PRICE_LOW: return(low[i]); case PRICE_MEDIAN: return((high[i]+low[i])/2.0); case PRICE_TYPICAL: return((high[i]+low[i]+close[i])/3.0); case PRICE_WEIGHTED: return((high[i]+low[i]+close[i]+close[i])/4.0); } return(0); } //+------------------------------------------------------------------+