Divergence Indicator For MT5
Table Of Contents:
- Divergence Indicator For MT5
- Instaliranje riječi Divergence Indicator For MT5
- Parametri Divergence Indicator For MT5
- Puferi Divergence Indicator For MT5
- Glavni dijelovi kodeksa
Divergence Indicator For MT5 jedinstven je alat koji analizira podatke pokazatelja i kretanje cijena tako da može pronaći točnu cijenu tamo gdje vrijednost indikatora ne odgovara tehničkim detaljima. Većinu vremena naivni trgovci ne znaju filtrirati lažne trgovinske signale. Oslanjaju se na tradicionalni pristup upravljanju rizikom tako da mogu prihvatiti gubitničke transakcije bez ikakvog stresa. No uz pomoć ovog pokazatelja, lako možete procijeniti anomaliju u tehničkim podacima i to će vam pomoći da ostanete po strani. Suprotno tome, kada se očitavanje pokazatelja u potpunosti sinkronizira s ručnom procjenom, možete trgovati s razinom pouzdanosti. Kad koristite ovaj alat, obavezno nikada ne preuzimajte previše rizika iako koristite jedan od najučinkovitijih načina pronalaska sjajnih obrta.
Instaliranje riječi Divergence Indicator For MT5
Nakon što preuzmete indikator preko gornjeg obrasca, morate raspakirati zip datoteku. Tada morate kopirati datoteku divergence.mq5 u mapu MQL5Indicators vaše MT5 instalacije. Nakon toga ponovno pokrenite MT5 i tada ćete indikator moći vidjeti na popisu pokazatelja.
Parametri Divergence Indicator For MT5
Divergence Indicator For MT5 ima 6 parametre za konfiguriranje.
input INDMODE ind=MODE_MACD; //indicator input uint pds=10; //indicator periods input PRICEMODE f=MODE_CLOSE; //price field input double dCh=0; //peak/trough depth minimum (0-1) input uint xshift=0; //shift signals back to match divergences input int Shift=0; //horizontal shift of the indicator in bars
Puferi Divergence Indicator For MT5
Divergence Indicator For MT5 osigurava 10 međuspremnike.
SetIndexBuffer(0,ExtOpenBuffer,INDICATOR_DATA); SetIndexBuffer(1,ExtHighBuffer,INDICATOR_DATA); SetIndexBuffer(2,ExtLowBuffer,INDICATOR_DATA); SetIndexBuffer(3,ExtCloseBuffer,INDICATOR_DATA); SetIndexBuffer(4,ExtColorBuffer,INDICATOR_COLOR_INDEX); SetIndexBuffer(5,R1,INDICATOR_CALCULATIONS); SetIndexBuffer(6,R2,INDICATOR_CALCULATIONS); SetIndexBuffer(7,y,INDICATOR_CALCULATIONS); SetIndexBuffer(8,xd,INDICATOR_CALCULATIONS); SetIndexBuffer(9,xu,INDICATOR_CALCULATIONS);
Glavni dijelovi kodeksa
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[]) { //---- checking for the sufficiency of bars for the calculation if(BarsCalculated(Ind_Handle) lt rates_total || rates_total lt min_rates_total) return(RESET); //---- declaration of local variables int limit,to_copy,bar,CNmb1,CNmb2,CNmb3,CNmb4; double Pkx1,Pkx2,Trx1,Trx2,Pky1,Pky2,Try1,Try2; bool Trx,Pkx,Try,Pky; //---- calculations of the necessary amount of data to be copied and //the starting number limit for the bar recalculation loop if(prev_calculated gt rates_total || prev_calculated lt =0)// checking for the first start of the indicator calculation { limit=rates_total-1-min_rates_total-3; // starting index for the calculation of all bars } else { limit=rates_total-prev_calculated; // starting index for the calculation of new bars } to_copy=limit+1; //---- copy newly appeared data into the arrays if(CopyBuffer(Ind_Handle,MAIN_LINE,0,to_copy,y) lt =0) return(RESET); //---- indexing elements in arrays as timeseries ArraySetAsSeries(high,true); ArraySetAsSeries(low,true); ArraySetAsSeries(close,true); ArraySetAsSeries(open,true); for(bar=limit; bar gt =0 && !IsStopped(); bar--) { if(f==MODE_CLOSE) { xu[bar]=close[bar]; xd[bar]=close[bar]; } else { xu[bar]=high[bar]; xd[bar]=low[bar]; } ExtOpenBuffer [bar]=0.0; ExtCloseBuffer[bar]=0.0; ExtHighBuffer [bar]=0.0; ExtLowBuffer [bar]=0.0; } //---- main loop of the indicator calculation for(bar=limit; bar gt =2 && !IsStopped(); bar--) { CNmb1=0; CNmb2=0; CNmb3=0; CNmb4=0; for(int kkk=bar; kkk lt rates_total; kkk++) { Pkx=xu[kkk] lt xu[kkk-1] && xu[kkk-1] gt xu[kkk-2] && xu[kkk-1] gt =(xu[kkk]+xu[kkk-2])/2.0*(1.0+fCh); if(Pkx) CNmb1++; if(Pkx && CNmb1==1) Pkx1=xu[kkk-1]; if(Pkx && CNmb1==2) Pkx2=xu[kkk-1]; Trx=xd[kkk] gt xd[kkk-1] && xd[kkk-1] lt xd[kkk-2] && xd[kkk-1] lt =(xd[kkk]+xd[kkk-2])/2.0*(1.0-fCh); if(Trx) CNmb2++; if(Trx && CNmb2==1) Trx1=xd[kkk-1]; if(Trx && CNmb2==2) Trx2=xd[kkk-1]; Pky=y[kkk] lt y[kkk-1] && y[kkk-1] gt y[kkk-2] && y[kkk-1] gt =(y[kkk]+y[kkk-2])/2.0*(1.0+fCh); if(Pky) CNmb3++; if(Pky && CNmb3==1) Pky1=y[kkk-1]; if(Pky && CNmb3==2) Pky2=y[kkk-1]; Try=y[kkk] gt y[kkk-1] && y[kkk-1] lt y[kkk-2] && y[kkk-1] lt =(y[kkk]+y[kkk-2])/2.0*(1.0-fCh); if(Try) CNmb4++; if(Try && CNmb4==1) Try1=y[kkk-1]; if(Try && CNmb4==2) Try2=y[kkk-1]; if(CNmb1 gt =2 && CNmb2 gt =2 && CNmb3 gt =2 && CNmb4 gt =2) break; } Pkx=xu[bar] lt xu[bar-1] && xu[bar-1] gt xu[bar-2] && xu[bar-1] gt =(xu[bar]+xu[bar-2])/2.0*(1.0+fCh); Trx=xd[bar] gt xd[bar-1] && xd[bar-1] lt xd[bar-2] && xd[bar-1] lt =(xd[bar]+xd[bar-2])/2.0*(1.0-fCh); Pky=y[bar] lt y[bar-1] && y[bar-1] gt y[bar-2] && y[bar-1] gt =(y[bar]+y[bar-2])/2.0*(1.0+fCh); Try=y[bar] gt y[bar-1] && y[bar-1] lt y[bar-2] && y[bar-1] lt =(y[bar]+y[bar-2])/2.0*(1.0-fCh); R1[bar]=0; if(Trx && Try && Trx1 lt Trx2 && Try1 gt Try2) R1[bar]=1; R2[bar]=0; if(Pkx && Pky && Pkx1 gt Pkx2 && Pky1 lt Pky2) R2[bar]=1; if(R1[bar]-R2[bar] gt 0) { ExtOpenBuffer[bar]=open[bar]; ExtCloseBuffer[bar]=close[bar]; ExtHighBuffer[bar]=high[bar]; ExtLowBuffer[bar]=low[bar]; if(close[bar] gt open[bar]) ExtColorBuffer[bar]=3; else ExtColorBuffer[bar]=2; } if(R1[bar]-R2[bar] lt 0) { ExtOpenBuffer[bar]=open[bar]; ExtCloseBuffer[bar]=close[bar]; ExtHighBuffer[bar]=high[bar]; ExtLowBuffer[bar]=low[bar]; if(open[bar] gt close[bar]) ExtColorBuffer[bar]=0; else ExtColorBuffer[bar]=1; } } //---- return(rates_total); } //+------------------------------------------------------------------+