Percentage Price Oscillator Indicator For MT5
Table Of Contents:
- Percentage Price Oscillator Indicator For MT5
- Instalowanie Percentage Price Oscillator Indicator For MT5
- Parametry Percentage Price Oscillator Indicator For MT5
- Bufory słowa Percentage Price Oscillator Indicator For MT5
- Główne części Kodeksu
Percentage Price Oscillator Indicator For MT5 jest również nazywany wskaźnikiem PPO i oblicza zmienność na rynku, a także kierunek trendu. Dzięki temu wskaźnikowi będziesz nawet w stanie dostrzec regularne rozbieżności, aby przewidzieć odwrócenie trendu. Obliczenie wskaźnika opiera się na 3 wykładniczych średnich kroczących o różnych okresach obliczeniowych. W rezultacie zobaczysz histogram w okienku wskaźnika, który rysuje niebieskie strefy podczas trendów wzrostowych i pomarańczowe strefy podczas trendów spadkowych.
Instalowanie Percentage Price Oscillator Indicator For MT5
Po pobraniu wskaźnika za pomocą powyższego formularza musisz rozpakować plik zip. Następnie musisz skopiować plik PPO.mq5 do folderu MQL5Indicators instalacji MT5 . Następnie uruchom ponownie MT5, a wtedy będziesz mógł zobaczyć wskaźnik na liście wskaźników.
Parametry Percentage Price Oscillator Indicator For MT5
Percentage Price Oscillator Indicator For MT5 3 Percentage Price Oscillator Indicator For MT5 ma parametry 3 do skonfigurowania.
input int inpFastPeriod = 9; // Fast calculation period input int inpSlowPeriod = 26; // Slow calculation period input ENUM_APPLIED_PRICE inpPrice = PRICE_CLOSE; // Price
Bufory słowa Percentage Price Oscillator Indicator For MT5
Percentage Price Oscillator Indicator For MT5 zapewnia bufory 4 .
SetIndexBuffer(0,fillu,INDICATOR_DATA); SetIndexBuffer(1,filld,INDICATOR_DATA); SetIndexBuffer(2,val,INDICATOR_DATA); SetIndexBuffer(3,valc,INDICATOR_COLOR_INDEX);
Główne części Kodeksu
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[]) { if(Bars(_Symbol,_Period) lt rates_total) return(prev_calculated); int i=(int)MathMax(prev_calculated-1,1); for(; i lt rates_total && !_StopFlag; i++) { double _price = getPrice(inpPrice,open,close,high,low,i,rates_total); double _emasl = iEma(_price,inpSlowPeriod,i,rates_total,0); val[i]=(_emasl!=0) ?(iEma(_price,inpFastPeriod,i,rates_total,1)-_emasl)/_emasl : 0; valc[i] = (i gt 0) ? (val[i] gt val[i-1]) ? 1 : (val[i] lt val[i-1]) ? 2 : valc[i-1] : 0; fillu[i] = val[i]; filld[i] = 0; } return (i); } //+------------------------------------------------------------------+ //| Custom functions | //+------------------------------------------------------------------+ double workEma[][2]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double iEma(double price,double period,int r,int _bars,int instanceNo=0) { if(ArrayRange(workEma,0)!=_bars) ArrayResize(workEma,_bars); workEma[r][instanceNo]=price; if(r gt 0 && period gt 1) workEma[r][instanceNo]=workEma[r-1][instanceNo]+(2.0/(1.0+period))*(price-workEma[r-1][instanceNo]); return(workEma[r][instanceNo]); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double getPrice(ENUM_APPLIED_PRICE tprice,const double &open[],const double &close[],const double &high[],const double &low[],int i,int _bars) { switch(tprice) { case PRICE_CLOSE: return(close[i]); case PRICE_OPEN: return(open[i]); case PRICE_HIGH: return(high[i]); case PRICE_LOW: return(low[i]); case PRICE_MEDIAN: return((high[i]+low[i])/2.0); case PRICE_TYPICAL: return((high[i]+low[i]+close[i])/3.0); case PRICE_WEIGHTED: return((high[i]+low[i]+close[i]+close[i])/4.0); } return(0); } //+------------------------------------------------------------------+