UltraWPR Indicator For MT5
UltraWPR Indicator For MT5 viser en tilpasset version af Williams Percent Range (WPR) -oscillatoren i et farvet skyformat. Skyens farve og bredde viser henholdsvis trendretningen og trendstyrken. Hvis WPR registrerer en underliggende bullish trend, males skyen Lime Green, mens en bearish trend genererer en Magenta-farvet sky. 8.00 markeres som overkøbt niveau, mens 2,00 repræsenterer oversolgt niveau. En yderligere udjævningsalgoritme er anvendt til indikatorberegningen for at filtrere markedsstøj. Grundlæggende handelssignaler genereret af UltraWPR-indikatoren til MT5 er forklaret nedenfor: 1. Gå lang tid, når skyfarven skifter fra Magenta til Lime Green. 2. Indtast kort, når skyfarven skifter fra Lime Green til Magenta.
Installation af UltraWPR Indicator For MT5
Når du har hentet indikatoren via formularen ovenfor, skal du pakke zip-filen ud. Derefter skal du kopiere filen ultrawpr.mq5 til mappen MQL5Indicators for din MT5 installation. Efter dette skal du genstarte MT5, så vil du være i stand til at se indikatoren på listen over indikatorer.
Parametre for UltraWPR Indicator For MT5
UltraWPR Indicator For MT5 har 15 parametre, der skal konfigureres.
input int WPR_Period=13; // WPR indicator period
input Smooth_Method W_Method=MODE_JJMA; // Smoothing method
input int StartLength=3; // Initial smoothing period
input int WPhase=100; // Smoothing parameter
input uint Step=5; // Period change step
input uint StepsTotal=10; // Number of period changes
input Smooth_Method SmoothMethod=MODE_JJMA; // Smoothing method
input int SmoothLength=3; // Smoothing depth
input int SmoothPhase=100; // Smoothing parameter
input uint UpLevel=80; // Overbought level, %
input uint DnLevel=20; // Oversold level, %
input color UpLevelsColor=Blue; // Overbought level color
input color DnLevelsColor=Blue; // Oversold level color
input STYLE Levelstyle=DASH_; // Levels style
input WIDTH LevelsWidth=Width_1; // Levels width
Buffere af UltraWPR Indicator For MT5
UltraWPR Indicator For MT5 leverer 2 buffere.
SetIndexBuffer(0,BullsBuffer,INDICATOR_DATA);
SetIndexBuffer(1,BearsBuffer,INDICATOR_DATA);
Vigtigste dele af 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(BarsCalculated(WPR_Handle) lt rates_total
|| rates_total lt min_rates_total)
return(RESET);
//---- declaration of local variables
int to_copy,limit,bar,maxbar1,maxbar2;
double WPR[],upsch,dnsch;
//---- calculation of maxbar initial index for the XMASeries() function
maxbar1=rates_total-1-min_rates_wpr;
maxbar2=rates_total-1-min_rates_xma;
//---- calculation of the limit 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
limit=maxbar1; // starting index for calculation of all bars
else limit=rates_total-prev_calculated; // starting index for calculation of new bars
//----
to_copy=limit+2;
//--- copy newly appeared data in the arrays
if(CopyBuffer(WPR_Handle,0,0,to_copy,WPR) lt =0) return(RESET);
//---- indexing elements in arrays as time series
ArraySetAsSeries(WPR,true);
//---- main indicator calculation loop
for(bar=limit; bar gt =0 && !IsStopped(); bar--)
{
for(int sm=int(StepsTotal); sm gt =0 && !IsStopped(); sm--)
xwpr0[sm]=XMA[sm].XMASeries(maxbar1,prev_calculated,rates_total,W_Method,WPhase,period[sm],WPR[bar],bar,true);
if(bar gt maxbar2)
{
if(bar) ArrayCopy(xwpr1,xwpr0,0,0,WHOLE_ARRAY);
continue;
}
upsch=0;
dnsch=0;
for(int sm=int(StepsTotal); sm gt =0 && !IsStopped(); sm--)
if(xwpr0[sm] gt xwpr1[sm]) upsch++;
else dnsch++;
BullsBuffer[bar]=XMA[StTot1].XMASeries(maxbar2,prev_calculated,rates_total,SmoothMethod,SmoothPhase,SmoothLength,upsch,bar,true);
BearsBuffer[bar]=XMA[StTot2].XMASeries(maxbar2,prev_calculated,rates_total,SmoothMethod,SmoothPhase,SmoothLength,dnsch,bar,true);
if(bar) ArrayCopy(xwpr1,xwpr0,0,0,WHOLE_ARRAY);
}
//----
return(rates_total);
}
//+------------------------------------------------------------------+