HMA Indicator For MT5

HMA Indicator For MT5

Ο HMA Indicator For MT5 δεν είναι σαν ένας κλασικός κινητός μέσος όρος που έχει πάντα προβλήματα υπολογισμού σε πραγματικό χρόνο. Με τη βοήθεια του κινούμενου μέσου του κύτους, μπορείτε να βρείτε ένα μοναδικό HMA που είναι συχνά γνωστός ως κινητός μέσος κύτος ανταποκρινόμενος στην κίνηση των τιμών με πολύ ακριβή τρόπο. Όταν η τιμή του μέσου διαπραγμάτευσης πέσει, ο κινούμενος μέσος όρος θα κατευθυνθεί επίσης προς το νότο επιβεβαιώνοντας την καθιέρωση της τάσης του bearish. Αντίθετα, όταν η τιμή αρχίζει να αποκτά ανοδική πορεία, ο κινητός μέσος όρος θα αρχίσει να διαπραγματεύεται στο βορρά. Για να μεγιστοποιήσετε τους συντελεστές κέρδους χρησιμοποιώντας αυτό το εργαλείο, θα πρέπει να το χρησιμοποιήσετε στο ημερήσιο χρονικό πλαίσιο. Εκείνοι που γνωρίζουν τη στρατηγική διαπραγμάτευσης των τιμών, μπορούν επίσης να αναζητήσουν τα σήματα ενεργειών για τις τιμές στο Moving Average Hull για να τοποθετήσουν το εμπόριο τους. Βεβαιωθείτε όμως ότι ποτέ δεν χρησιμοποιείτε πολύ σφιχτές στάσεις ή μεγάλη ένταση κατά την εμπορία της αγοράς με αυτόν τον δείκτη.

FREE HMA Indicator

Download the FREE HMA 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

 

Εγκατάσταση του HMA Indicator For MT5

Αφού κατεβάσετε την ένδειξη μέσω της παραπάνω φόρμας, πρέπει να αποσυνδέσετε το αρχείο zip. Στη συνέχεια, πρέπει να αντιγράψετε το αρχείο HMA.mq5 στο φάκελο MQL5Indicators της εγκατάστασης MT5 . Στη συνέχεια, κάντε επανεκκίνηση του MT5 και, στη συνέχεια, θα μπορείτε να δείτε τον δείκτη στη λίστα των δεικτών.

Παράμετροι του HMA Indicator For MT5

Το HMA Indicator For MT5 έχει παραμέτρους 2 για να ρυθμίσετε τις παραμέτρους.

input uint                 InpPeriod         =  20;            // Period
input ENUM_APPLIED_PRICE   InpAppliedPrice   =  PRICE_CLOSE;   // Applied price

Buffers του HMA Indicator For MT5

Το HMA Indicator For MT5 παρέχει buffers 4 .

SetIndexBuffer(0,BufferHMA,INDICATOR_DATA);
SetIndexBuffer(1,BufferRAW,INDICATOR_CALCULATIONS);
SetIndexBuffer(2,BufferMAP,INDICATOR_CALCULATIONS);
SetIndexBuffer(3,BufferMAL,INDICATOR_CALCULATIONS);

Κύρια μέρη του κώδικα

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[])
  {
//--- @ gt 25@:0 =0  lt 8=8 lt 0;L= gt 5 : gt ;85AB2 gt  10@ gt 2 4;O @0AGQB0
   if(rates_total lt period_ma) return 0;
//--- @ gt 25@:0 8 @0AGQB : gt ;8G5AB20 ?@ gt AG8BK205 lt KE 10@ gt 2
   int limit=rates_total-prev_calculated;
   if(limit gt 1)
     {
      limit=rates_total-period_ma-1;
      ArrayInitialize(BufferHMA,EMPTY_VALUE);
      ArrayInitialize(BufferRAW,0);
      ArrayInitialize(BufferMAP,0);
      ArrayInitialize(BufferMAL,0);
     }
//---  gt 43 gt B gt 2:0 40==KE
   int copied=0,count=(limit==0 ? 1 : rates_total);
   copied=CopyBuffer(handle_maP,0,0,count,BufferMAP);
   if(copied!=count) return 0;
   copied=CopyBuffer(handle_maL,0,0,count,BufferMAL);
   if(copied!=count) return 0;
   for(int i=limit; i gt =0 && !IsStopped(); i--)
      BufferRAW[i]=2*BufferMAL[i]-BufferMAP[i];
//---  0AGQB 8=48:0B gt @0
   for(int i=limit; i gt =0 && !IsStopped(); i--)
      BufferHMA[i]=MAOnArray(BufferRAW,0,period_sqrt,0,MODE_LWMA,i);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| iMAOnArray() https://www.mql5.com/ru/articles/81                 |
//+------------------------------------------------------------------+
double MAOnArray(double &array[],int total,int period,int ma_shift,int ma_method,int shift)
  {
   double buf[],arr[];
   if(total==0) total=ArraySize(array);
   if(total gt 0 && total lt =period) return(0);
   if(shift gt total-period-ma_shift) return(0);
//---
   switch(ma_method)
     {
      case MODE_SMA :
        {
         total=ArrayCopy(arr,array,0,shift+ma_shift,period);
         if(ArrayResize(buf,total) lt 0) return(0);
         double sum=0;
         int    i,pos=total-1;
         for(i=1;i lt period;i++,pos--)
            sum+=arr[pos];
         while(pos gt =0)
           {
            sum+=arr[pos];
            buf[pos]=sum/period;
            sum-=arr[pos+period-1];
            pos--;
           }
         return(buf[0]);
        }
      case MODE_EMA :
        {
         if(ArrayResize(buf,total) lt 0) return(0);
         double pr=2.0/(period+1);
         int    pos=total-2;
         while(pos gt =0)
           {
            if(pos==total-2) buf[pos+1]=array[pos+1];
            buf[pos]=array[pos]*pr+buf[pos+1]*(1-pr);
            pos--;
           }
         return(buf[shift+ma_shift]);
        }
      case MODE_SMMA :
        {
         if(ArrayResize(buf,total) lt 0) return(0);
         double sum=0;
         int    i,k,pos;
         pos=total-period;
         while(pos gt =0)
           {
            if(pos==total-period)
              {
               for(i=0,k=pos;i lt period;i++,k++)
                 {
                  sum+=array[k];
                  buf[k]=0;
                 }
              }
            else sum=buf[pos+1]*(period-1)+array[pos];
            buf[pos]=sum/period;
            pos--;
           }
         return(buf[shift+ma_shift]);
        }
      case MODE_LWMA :
        {
         if(ArrayResize(buf,total) lt 0) return(0);
         double sum=0.0,lsum=0.0;
         double price;
         int    i,weight=0,pos=total-1;
         for(i=1;i lt =period;i++,pos--)
           {
            price=array[pos];
            sum+=price*i;
            lsum+=price;
            weight+=i;
           }
         pos++;
         i=pos+period;
         while(pos gt =0)
           {
            buf[pos]=sum/weight;
            if(pos==0) break;
            pos--;
            i--;
            price=array[pos];
            sum=sum-lsum+price*period;
            lsum-=array[i];
            lsum+=price;
           }
         return(buf[shift+ma_shift]);
        }
      default: return(0);
     }
   return(0);
  }
//+------------------------------------------------------------------+

 

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.