Awesome Oscillator Extended Indicator For MT5

Awesome Oscillator Extended Indicator For MT5

Table Of Contents:

  1. Awesome Oscillator Extended Indicator For MT5
  2. Memasang Awesome Oscillator Extended Indicator For MT5
  3. Parameter Awesome Oscillator Extended Indicator For MT5
  4. Awesome Oscillator Extended Indicator For MT5
  5. Bahagian Utama Kod

Awesome Oscillator Extended Indicator For MT5 Latihan Awesome Oscillator Extended Indicator For MT5 didasarkan pada pengiraan purata bergerak. Anda boleh memilih antara 4 jenis pengiraan MA: SMA, EMA, SMMA dan LMWA. Anda juga boleh memilih lilin asik heiken dan bukannya nilai lilin biasa untuk menyesuaikan penunjuk kepada keperluan anda. Sebaik sahaja dikonfigurasi penunjuk boleh membantu anda untuk mengesan arah carta. Dan kerana ia tidak mempunyai paras had atas / bawah penunjuk ini juga boleh digunakan untuk mengesan perbezaan biasa pada akhir trend ke masa perdagangan pembalikan anda.

FREE Awesome oscillator - extended Indicator

Download the FREE Awesome oscillator - extended Indicator for MT5.

To receive my email 100% sure: 
Put my email on your whitelist!

 

Partially Automated Trading Besides Your Day Job

Alerts In Real-Time When Divergences Occur

 

Memasang Awesome Oscillator Extended Indicator For MT5

Selepas anda memuat turun penunjuk melalui borang di atas, anda perlu unzip fail zip. Kemudian anda perlu menyalin fail Awesome_oscillator_-_extended.mq5 ke folder MQL5Indicators pemasangan MT5 anda. Selepas itu sila mulakan MT5 dan kemudian anda akan dapat melihat penunjuk dalam senarai petunjuk.

Parameter Awesome Oscillator Extended Indicator For MT5

Awesome Oscillator Extended Indicator For MT5 mempunyai parameter 14 untuk mengkonfigurasi.

input ENUM_TIMEFRAMES TimeFrame         = PERIOD_CURRENT; // Time frame input enMaTypes       MaMethod1         = ma_sma;    // Fast average method input int             MaPeriod1         = 5;         // Faste average period input enPrices        MaPrice1          = pr_median; // Fast average price input enMaTypes       MaMethod2         = ma_sma;    // Slow average method input int             MaPeriod2         = 34;        // Slow average period input enPrices        MaPrice2          = pr_median; // Slow average price input bool            AlertsOn          = false;     // Turn alerts on? input bool            AlertsOnCurrent   = true;      // Alert on current bar? input bool            AlertsMessage     = true;      // Display messageas on alerts? input bool            AlertsSound       = false;     // Play sound on alerts? input bool            AlertsEmail       = false;     // Send email on alerts? input bool            AlertsNotify      = false;     // Send push notification on alerts? input bool            Interpolate       = true;           // Interpolate in multi time frame mode? 

Awesome Oscillator Extended Indicator For MT5

Awesome Oscillator Extended Indicator For MT5 menyediakan buffer 7 .

SetIndexBuffer(0,aofu  ,INDICATOR_DATA); SetIndexBuffer(1,aofd  ,INDICATOR_DATA); SetIndexBuffer(2,histo ,INDICATOR_DATA); SetIndexBuffer(3,histoc,INDICATOR_COLOR_INDEX); SetIndexBuffer(4,ao    ,INDICATOR_DATA); SetIndexBuffer(5,aoc   ,INDICATOR_COLOR_INDEX); SetIndexBuffer(6,count ,INDICATOR_CALCULATIONS); 

Bahagian Utama Kod

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(-1);        //       //       //       //       //        if (timeFrame!=_Period)       {          double result[]; datetime currTime[],nextTime[];              if (_mtfHandle==INVALID_HANDLE) _mtfHandle = _mtfCall;             if (_mtfHandle==INVALID_HANDLE)              return(0);             if (CopyBuffer(_mtfHandle,6,0,1,result)==-1) return(0);                         //                 //                 //                 //                 //                                #define _mtfRatio PeriodSeconds(timeFrame)/PeriodSeconds(_Period)                 int i,k,n,limit = MathMin(MathMax(prev_calculated-1,0),MathMax(rates_total-(int)result[0]*_mtfRatio-1,0));                 for (i=limit; i lt rates_total && !_StopFlag; i++ )                 {                   #define _mtfCopy(_buff,_buffNo) if (CopyBuffer(_mtfHandle,_buffNo,time[i],1,result)==-1) break; _buff[i] = result[0]                           _mtfCopy(aofu  ,0);                           _mtfCopy(histo ,2);                           _mtfCopy(histoc,3);                           _mtfCopy(ao    ,4);                           _mtfCopy(aoc   ,5);                                    aofd[i] = 0;                                               //                           //                           //                           //                           //                                               if (!Interpolate) continue;  CopyTime(_Symbol,timeFrame,time[i  ],1,currTime);                                if (i lt (rates_total-1)) { CopyTime(_Symbol,timeFrame,time[i+1],1,nextTime); if (currTime[0]==nextTime[0]) continue; }                               for(n=1; (i-n) gt  0 && time[i-n]  gt = currTime[0]; n++) continue;	                               for(k=1; (i-k) gt =0 && k lt n; k++)                               {                                  #define _mtfInterpolate(_buff) _buff[i-k] = _buff[i]+(_buff[i-n]-_buff[i])*k/n                                  _mtfInterpolate(histo);                                  _mtfInterpolate(ao   );                                  _mtfInterpolate(aofu );                               }                                               }                 return(i);       }     //    //    //    //    //     int i; for (i=(int)MathMax(prev_calculated-1,0); i lt rates_total  && !_StopFlag; i++)    {       ao[i]     = iCustomMa(MaMethod1,getPrice(MaPrice1,open,close,high,low,i,rates_total,0),MaPeriod1,i,rates_total,0)-iCustomMa(MaMethod2,getPrice(MaPrice2,open,close,high,low,i,rates_total,0),MaPeriod2,i,rates_total,1);       aoc[i]    = (ao[i] gt 0) ? 1 : (ao[i] lt 0) ? 2 : (i gt 0) ? aoc[i-1] : 0;        aofu[i]   = ao[i]; aofd[i] = 0;       histo[i]  = ao[i];       histoc[i] = (i gt 0) ? (aoc[i]==1) ? (ao[i] gt ao[i-1]) ? 1 : 2 : (ao[i] lt ao[i-1]) ? 3 : 4 : 0;    }          count[rates_total-1] = MathMax(rates_total-prev_calculated+1,1);    manageAlerts(time,aoc,rates_total);    return(i); }  //------------------------------------------------------------------ //                                                                   //------------------------------------------------------------------ // // // // //  #define _maInstances 2 #define _maWorkBufferx1 1*_maInstances double iCustomMa(int mode, double price, double length, int r, int bars, int instanceNo=0) {    switch (mode)    {       case ma_sma   : return(iSma(price,(int)length,r,bars,instanceNo));       case ma_ema   : return(iEma(price,length,r,bars,instanceNo));       case ma_smma  : return(iSmma(price,(int)length,r,bars,instanceNo));       case ma_lwma  : return(iLwma(price,(int)length,r,bars,instanceNo));       default       : return(price);    } }  // // // // //  double workSma[][_maWorkBufferx1]; double iSma(double price, int period, int r, int _bars, int instanceNo=0) {    if (ArrayRange(workSma,0)!= _bars) ArrayResize(workSma,_bars); int k=1;     workSma[r][instanceNo+0] = price;    double avg = price; for(; k lt period && (r-k) gt =0; k++) avg += workSma[r-k][instanceNo+0];  avg /= (double)k;    return(avg); }  // // // // //  double workEma[][_maWorkBufferx1]; 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 workSmma[][_maWorkBufferx1]; double iSmma(double price, double period, int r, int _bars, int instanceNo=0) {    if (ArrayRange(workSmma,0)!= _bars) ArrayResize(workSmma,_bars);     workSmma[r][instanceNo] = price;    if (r gt 1 && period gt 1)           workSmma[r][instanceNo] = workSmma[r-1][instanceNo]+(price-workSmma[r-1][instanceNo])/period;    return(workSmma[r][instanceNo]); }  // // // // //  double workLwma[][_maWorkBufferx1]; double iLwma(double price, double period, int r, int _bars, int instanceNo=0) {    if (ArrayRange(workLwma,0)!= _bars) ArrayResize(workLwma,_bars);        workLwma[r][instanceNo] = price; if (period lt 1) return(price);       double sumw = period;       double sum  = period*price;        for(int k=1; k lt period && (r-k) gt =0; k++)       {          double weight = period-k;                 sumw  += weight;                 sum   += weight*workLwma[r-k][instanceNo];         }                    return(sum/sumw); }  //------------------------------------------------------------------ // //------------------------------------------------------------------ // // // // //  void manageAlerts(const datetime& time[], double& trend[], int bars) {    if (!AlertsOn) return;       int whichBar = bars-1; if (!AlertsOnCurrent) whichBar = bars-2; datetime time1 = time[whichBar];       if (trend[whichBar] != trend[whichBar-1])       {          if (trend[whichBar] == 1) doAlert(time1,"up");          if (trend[whichBar] == 2) doAlert(time1,"down");       }          }     // // // // //  void doAlert(datetime forTime, string doWhat) {    static string   previousAlert="nothing";    static datetime previousTime;    string message;        if (previousAlert != doWhat || previousTime != forTime)     {       previousAlert  = doWhat;       previousTime   = forTime;        //       //       //       //       //        message = timeFrameToString(_Period)+" "+_Symbol+" at "+TimeToString(TimeLocal(),TIME_SECONDS)+" AO state changed to "+doWhat;          if (AlertsMessage) Alert(message);          if (AlertsEmail)   SendMail(_Symbol+" awesome oscillator",message);          if (AlertsNotify)  SendNotification(message);          if (AlertsSound)   PlaySound("alert2.wav");    } }  //------------------------------------------------------------------ // //------------------------------------------------------------------ // // // // // //  #define _pricesInstances 2 #define _pricesSize      4 double workHa[][_pricesInstances*_pricesSize]; double getPrice(int tprice, const double& open[], const double& close[], const double& high[], const double& low[], int i,int _bars, int instanceNo=0) {   if (tprice gt =pr_haclose)    {       if (ArrayRange(workHa,0)!= _bars) ArrayResize(workHa,_bars); instanceNo*=_pricesSize;                    //          //          //          //          //                    double haOpen;          if (i gt 0)                 haOpen  = (workHa[i-1][instanceNo+2] + workHa[i-1][instanceNo+3])/2.0;          else   haOpen  = (open[i]+close[i])/2;          double haClose = (open[i] + high[i] + low[i] + close[i]) / 4.0;          double haHigh  = MathMax(high[i], MathMax(haOpen,haClose));          double haLow   = MathMin(low[i] , MathMin(haOpen,haClose));           if(haOpen   lt haClose) { workHa[i][instanceNo+0] = haLow;  workHa[i][instanceNo+1] = haHigh; }           else                 { workHa[i][instanceNo+0] = haHigh; workHa[i][instanceNo+1] = haLow;  }                                  workHa[i][instanceNo+2] = haOpen;                                 workHa[i][instanceNo+3] = haClose;          //          //          //          //          //                    switch (tprice)          {             case pr_haclose:     return(haClose);             case pr_haopen:      return(haOpen);             case pr_hahigh:      return(haHigh);             case pr_halow:       return(haLow);             case pr_hamedian:    return((haHigh+haLow)/2.0);             case pr_hamedianb:   return((haOpen+haClose)/2.0);             case pr_hatypical:   return((haHigh+haLow+haClose)/3.0);             case pr_haweighted:  return((haHigh+haLow+haClose+haClose)/4.0);             case pr_haaverage:   return((haHigh+haLow+haClose+haOpen)/4.0);             case pr_hatbiased:                if (haClose gt haOpen)                      return((haHigh+haClose)/2.0);                else  return((haLow+haClose)/2.0);                     case pr_hatbiased2:                if (haClose gt haOpen)  return(haHigh);                if (haClose lt haOpen)  return(haLow);                                     return(haClose);                  }    }        //    //    //    //    // 

 

About Me

I'm Mike Semlitsch the owner of PerfectTrendSystem.com. My trading career started in 2007. Since 2013 I have helped thousands of traders to take their trading to the next level. Many of them are now constantly profitable traders. 

The following performance was achieved by me while trading live in front of hundreds of my clients:

Connect With Me:  

Results From 5 Months!
This service starts soon! Be the first who get's notified when it begins!

This FREE Indicator Can Transform
Your Trading!

FREE Indicator + Telegram Group


Request the Ultimate Double Top/Bottom Indicator which is used by 10,000+ traders.