ADXVMA Binary Indicator For MT5
Table Of Contents:
- ADXVMA Binary Indicator For MT5
- Installere ADXVMA Binary Indicator For MT5
- Parametere for ADXVMA Binary Indicator For MT5
- Buffere av ADXVMA Binary Indicator For MT5
- Hoveddeler av koden
ADXVMA Binary Indicator For MT5 er et veldig unikt verktøy som definerer uptrend med +1 verdi og downtrend med -1 verdi. Indikatoren gir imidlertid ingen nøyaktig informasjon for å utføre handlene. Dette verktøyet fungerer best når du bruker det etterfølgende stopptapet for å maksimere overskuddet. Siden indikatordataene er veldig følsomme for svak prisbevegelse, må du lære å bruke dette verktøyet i den daglige og ukentlige tidsrammen. Uansett hvor overbevisende handelsoppsettet er, bør du begrense risikoen til 2% i hver handel. Hvis det er nødvendig, kan du åpne en demokonto for å lære bruken av den uten å tape penger.
Installere ADXVMA Binary Indicator For MT5
Etter at du har lastet ned indikatoren via skjemaet over, må du pakke ut zip-filen. Deretter må du kopiere filen ADXVMA binary.mq5 til mappen MQL5Indicators for din MT5 installasjon. Etter det kan du starte MT5 på nytt, så vil du kunne se indikatoren i listen over indikatorer.
Parametere for ADXVMA Binary Indicator For MT5
ADXVMA Binary Indicator For MT5 har 2 parametere som skal konfigureres.
input double inpPeriod = 14; // Period input ENUM_APPLIED_PRICE inpPrice = PRICE_MEDIAN; // Price
Buffere av ADXVMA Binary Indicator For MT5
ADXVMA Binary Indicator For MT5 inneholder 2 buffere.
SetIndexBuffer(0,val,INDICATOR_DATA); SetIndexBuffer(1,adxvma,INDICATOR_CALCULATIONS);
Hoveddeler av koden
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); } //+------------------------------------------------------------------+