Demand Index Indicator For MT5
Table Of Contents:
- Demand Index Indicator For MT5
- Instaliranje riječi Demand Index Indicator For MT5
- Parametri Demand Index Indicator For MT5
- Puferi Demand Index Indicator For MT5
- Glavni dijelovi kodeksa
Demand Index Indicator For MT5 izračunava vrijednosti na temelju cijene i volumena. Možete birati između 10 algoritama za izravnavanje.
Instaliranje riječi Demand Index Indicator For MT5
Nakon što preuzmete indikator preko gornjeg obrasca, morate raspakirati zip datoteku. Tada morate kopirati datoteku demand_index.mq5 u mapu MQL5Indicators vaše MT5 instalacije. Nakon toga ponovno pokrenite MT5 i tada ćete indikator moći vidjeti na popisu pokazatelja.
Parametri Demand Index Indicator For MT5
Demand Index Indicator For MT5 ima 6 parametre za konfiguriranje.
input Smooth_Method MA_SMethod=MODE_SMA; // Smoothing method input int SmLength=12; // Smoothing depth input int SmPhase=15; // Smoothing parameter input Applied_price_ IPC=PRICE_QUARTER_; // Price constant input ENUM_APPLIED_VOLUME VolumeType=VOLUME_TICK; // Volume input int Shift=0; // Horizontal shift of the indicator in bars
Puferi Demand Index Indicator For MT5
Demand Index Indicator For MT5 osigurava 1 međuspremnike.
SetIndexBuffer(0,DIBuffer,INDICATOR_DATA);
Glavni dijelovi kodeksa
int OnCalculate(const int rates_total, // number of bars in history at the current tick const int prev_calculated,// number of bars calculated at previous call const datetime &time[], const double &open[], const double& high[], // price array of maximums of price for the indicator calculation const double& low[], // price array of minimums of price for the indicator calculation const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //---- checking the number of bars to be enough for the calculation if(rates_total lt StartBars) return(0); //---- declarations of local variables int first,bar,Sign; double AvgTR,Avg,VolAvg,price0,price1,WtCRatio=0.0,VolRatio; double Constant,DMI,TempDI,BuyPres,SellPres,BuyP,SellP; long Volume; static double VolAvg_,BuyPres_,SellPres_; //---- calculation of the first starting index for the bars recalculation loop if(prev_calculated gt rates_total || prev_calculated lt =0) // checking for the first start of the indicator calculation { first=1; // starting index for calculation of all bars BuyPres_=1; SellPres_=1; if(VolumeType==VOLUME_TICK) VolAvg_=double(tick_volume[0]); else VolAvg_=double(volume[0]); } else first=prev_calculated-1; // starting index for calculation of new bars //---- restore values of the variables VolAvg=VolAvg_; BuyPres=BuyPres_; SellPres=SellPres_; //---- main indicator calculation loop for(bar=first; bar lt rates_total; bar++) { //---- store values of the variables before running at the current bar if(rates_total!=prev_calculated && bar==0) { VolAvg_=VolAvg; BuyPres_=BuyPres; SellPres_=SellPres; } //---- call of the PriceSeries function to get the input price price_ price0=PriceSeries(IPC,bar, open,low,high,close); price1=PriceSeries(IPC,bar-1,open,low,high,close); if(VolumeType==VOLUME_TICK) Volume=long(tick_volume[bar]); else Volume=long(volume[bar]); Avg=MathMax(high[bar],high[bar-1])-MathMin(low[bar],low[bar-1]); AvgTR=XMA1.XMASeries(1,prev_calculated,rates_total,MA_SMethod,SmPhase,SmLength,Avg,bar,false); VolAvg=((VolAvg *(SmLength-1))+Volume)/SmLength; if(price0!=0 && price1!=0 && AvgTR!=0 && VolAvg!=0) WtCRatio=(price0-price1)/MathMin(price0,price1); if(VolAvg!=0)VolRatio=Volume/VolAvg; else VolRatio=1; Constant=((price0*3)/AvgTR)*MathAbs(WtCRatio); if(Constant gt 88) Constant=88; Constant=VolRatio/MathExp(Constant); if(WtCRatio gt 0) { BuyP=VolRatio; SellP=Constant; } else { BuyP=Constant; SellP=VolRatio; } BuyPres =((BuyPres *(SmLength-1))+BuyP )/SmLength; SellPres=((SellPres*(SmLength-1))+SellP)/SmLength; TempDI=+1; if(SellPres gt BuyPres) { Sign=-1; if(SellPres!=0) TempDI=BuyPres/SellPres; } else { Sign=+1; if(BuyPres!=0) TempDI=SellPres/BuyPres; } TempDI*=Sign; if(TempDI lt 0) DMI= -1-TempDI; else DMI =+1-TempDI; DIBuffer[bar]=DMI*100.0; } //---- return(rates_total); } //+------------------------------------------------------------------+