Demand Index Indicator For MT5
Table Of Contents:
- Demand Index Indicator For MT5
- Installere Demand Index Indicator For MT5
- Parametere for Demand Index Indicator For MT5
- Buffere av Demand Index Indicator For MT5
- Hoveddeler av koden
Demand Index Indicator For MT5 beregner verdiene basert på Demand Index Indicator For MT5 og volumet. Du kan velge mellom 10 utjevningsalgoritmer.
Installere Demand Index Indicator For MT5
Etter at du har lastet ned indikatoren via skjemaet over, må du pakke ut zip-filen. Deretter må du kopiere filen demand_index.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 Demand Index Indicator For MT5
Demand Index Indicator For MT5 har 6 parametere som skal konfigureres.
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
Buffere av Demand Index Indicator For MT5
Demand Index Indicator For MT5 inneholder 1 buffere.
SetIndexBuffer(0,DIBuffer,INDICATOR_DATA);
Hoveddeler av koden
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); } //+------------------------------------------------------------------+