Chaikin Oscillator CHO Indicator For MT5
Table Of Contents:
- Chaikin Oscillator CHO Indicator For MT5
- Installere Chaikin Oscillator CHO Indicator For MT5
- Parametere for Chaikin Oscillator CHO Indicator For MT5
- Buffere av Chaikin Oscillator CHO Indicator For MT5
- Hoveddeler av koden
Chaikin Oscillator CHO Indicator For MT5 er basert på akkumulasjonsdistribusjonsindikatoren og det eksponentielle glidende gjennomsnittet. EMA-algoritmen brukes på verdiene til AD-indikatoren. For å beregne verdien av Chaikin Oscillator beregnes EMA med periode 3 og EMA med periode 10 i AD-indikatoren. Forskjellen mellom EMA (3) og EMA (10) er verdien som tegnes på histogrammet. Fordi volum er en del av AD-indikatoren, henter også Chaikin Oscillator verdiene fra volumet og kan derfor være en ledende indikator.
Installere Chaikin Oscillator CHO Indicator For MT5
Etter at du har lastet ned indikatoren via skjemaet over, må du pakke ut zip-filen. Deretter må du kopiere filen cho.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 Chaikin Oscillator CHO Indicator For MT5
Chaikin Oscillator CHO Indicator For MT5 har 4 parametere som skal konfigureres.
input int InpFastMA=3; // Fast MA period input int InpSlowMA=10; // Slow MA period input ENUM_MA_METHOD InpSmoothMethod=MODE_EMA; // MA method input ENUM_APPLIED_VOLUME InpVolumeType=VOLUME_TICK; // Volumes
Buffere av Chaikin Oscillator CHO Indicator For MT5
Chaikin Oscillator CHO Indicator For MT5 inneholder 4 buffere.
SetIndexBuffer(0,ExtCHOBuffer,INDICATOR_DATA); SetIndexBuffer(1,ExtFastEMABuffer,INDICATOR_CALCULATIONS); SetIndexBuffer(2,ExtSlowEMABuffer,INDICATOR_CALCULATIONS); SetIndexBuffer(3,ExtADBuffer,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 &TickVolume[], const long &Volume[], const int &Spread[]) { int i,limit; //--- check for rates total if(rates_total lt InpSlowMA) return(0); // not enough bars for calculation //--- preliminary calculations if(prev_calculated lt 1) { limit=1; //--- first values if(InpVolumeType==VOLUME_TICK) ExtADBuffer[0]=AD(High[0],Low[0],Close[0],TickVolume[0]); else ExtADBuffer[0]=AD(High[0],Low[0],Close[0],Volume[0]); ExtSlowEMABuffer[0]=ExtADBuffer[0]; ExtFastEMABuffer[0]=ExtADBuffer[0]; } else limit=prev_calculated-1; //--- calculate AD buffer if(InpVolumeType==VOLUME_TICK) { for(i=limit;i lt rates_total && !IsStopped();i++) ExtADBuffer[i]=ExtADBuffer[i-1]+AD(High[i],Low[i],Close[i],TickVolume[i]); } else { for(i=limit;i lt rates_total && !IsStopped();i++) ExtADBuffer[i]=ExtADBuffer[i-1]+AD(High[i],Low[i],Close[i],Volume[i]); } //--- calculate EMA on array ExtADBuffer AverageOnArray(InpSmoothMethod,rates_total,prev_calculated,0,InpSlowMA,ExtADBuffer,ExtSlowEMABuffer,weightslow); AverageOnArray(InpSmoothMethod,rates_total,prev_calculated,0,InpFastMA,ExtADBuffer,ExtFastEMABuffer,weightfast); //--- calculate chaikin oscillator for(i=limit;i lt rates_total && !IsStopped();i++) ExtCHOBuffer[i]=ExtFastEMABuffer[i]-ExtSlowEMABuffer[i]; //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+