HMA Indicator For MT5
HMA Indicator For MT5 5 के लिए HMA Indicator For MT5 शास्त्रीय चलती औसत की तरह नहीं है जिसमें हमेशा वास्तविक समय की गणना के मुद्दे होते हैं। पतवार चलती औसत की मदद से, आप एक अद्वितीय एचएमए पा सकते हैं जिसे अक्सर मूव मूविंग औसत के रूप में जाना जाता है जो कि मूवमेंट मूवमेंट का बहुत सटीक तरीके से जवाब देता है। जब ट्रेडिंग इंस्ट्रूमेंट की कीमत गिरती है, तो चलती औसत भी मंदी की प्रवृत्ति की स्थापना की पुष्टि करेगी। इसके विपरीत, जब कीमत तेजी से बढ़ना शुरू होती है, तो चलती औसत उत्तर में कारोबार करना शुरू कर देगी। इस उपकरण का उपयोग करके लाभ कारकों को अधिकतम करने के लिए, आपको इसे दैनिक समय सीमा में उपयोग करना चाहिए। जो लोग प्राइस एक्शन ट्रेडिंग रणनीति जानते हैं, वे अपने व्यापार को रखने के लिए हल मूविंग एवरेज में मूल्य एक्शन सिग्नल की तलाश कर सकते हैं। लेकिन सुनिश्चित करें कि आप इस संकेतक के साथ बाजार का व्यापार करते समय कभी भी तंग स्टॉप या बड़ी मात्रा का उपयोग न करें।
HMA Indicator For MT5 स्थापित करना
आपके द्वारा उपर्युक्त फ़ॉर्म के माध्यम से संकेतक डाउनलोड करने के बाद आपको ज़िप-फ़ाइल को अनज़िप करना होगा। तो फिर तुम फाइल कॉपी करने की जरूरत है 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
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);
}
//+------------------------------------------------------------------+