HMA Indicator For MT5

HMA Indicator For MT5

HMA Indicator For MT5 นั้นไม่เหมือนค่าเฉลี่ยเคลื่อนที่แบบคลาสสิคที่มักมีปัญหาการคำนวณแบบเรียลไทม์ ด้วยความช่วยเหลือของค่าเฉลี่ยเคลื่อนที่ฮัลล์คุณสามารถค้นหา HMA ที่ไม่เหมือนใครซึ่งมักรู้จักกันในชื่อฮัลล์ค่าเฉลี่ยเคลื่อนที่ตอบสนองต่อการเคลื่อนไหวของราคาอย่างแม่นยำ เมื่อราคาของเครื่องมือการซื้อขายลดลงค่าเฉลี่ยเคลื่อนที่ก็จะไปทางทิศใต้เพื่อยืนยันการจัดตั้งแนวโน้มตลาดหมี ในทางตรงกันข้ามเมื่อราคาเริ่มได้รับโมเมนตัมรั้นค่าเฉลี่ยเคลื่อนที่จะเริ่มซื้อขายในภาคเหนือ เพื่อเพิ่มปัจจัยผลกำไรสูงสุดโดยใช้เครื่องมือนี้คุณควรใช้มันในกรอบเวลารายวัน ผู้ที่รู้กลยุทธ์การซื้อขายด้านราคาสามารถมองหาสัญญาณการเคลื่อนไหวของราคาใน Hull Moving Average เพื่อทำการซื้อขาย แต่ให้แน่ใจว่าคุณไม่เคยใช้หยุดแน่นเกินไปหรือปริมาณมากในขณะที่การซื้อขายในตลาดด้วยตัวบ่งชี้นี้

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

บัฟเฟอร์ของ HMA Indicator For MT5

HMA Indicator For MT5 ให้บัฟเฟอร์ 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.