移动平均线HMA的设定方法说明与 MT4的外汇自动程序交易编码教学
量化分析
2023-09-22 08:49:13
2023年外汇交易商最新排名更多
HMA是2005年由Alan Hull发明的移动平均线。
其特征是移动平均线的周期设置的越长,线条越平滑,也就更加容易避免假讯号。
而另一方,如果想避免与实际价格的延迟或乖离时,把周期设短也是一种有效的方法。
在MT4中默认的移动平均线中也有追求平滑的SMMA(Smoothed Moving Average)以及越近期影响力越大的EMA(Exponential Moving Average)等多种有名的平均线。
HMA是以WMA(Weighted MA)为基准所计算。
在HMA中所使用的WMA是指MT4中的LWMA(Linear Weighted Moving Average)。
以下为计算公式:
●HMA(周期:P)
●①pHMA=WMA(周期:P÷2)x2-WMA(周期:P)
●周期:P的一半的WMA的2倍数值减去期间:P的WMA。
●②①中所计算的数列的周期:P的平方根的WMA为HMA。
●HMA=WMA(周期P的平方根、pHMA)
从下图可以看出与SMA和EMA相比,HMA的反应非常迅速。
图)黄色:HMA 蓝色:SMA 红色:EMA
HMA源代码)
●初始设置
WMA虽然使用LWMA,
但是输入input ENUM_MA_METHOD Method=MODE_LWMA;的话也可以选择EMA。
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 clrWhite
#property indicator_color2 clrGold
#property indicator_width1 1
#property indicator_width2 3
#property indicator_type1 DRAW_LINE
#property indicator_type2 DRAW_LINE
input int period=13;
input ENUM_MA_METHOD Method=MODE_LWMA;
datetime TimeOld=Time[0];
double pHMA[],HMA[];
●缓冲设置
计算时虽然会制作成pHMA,但是,使用DRAW_NONE可以不显示。
void OnInit(){
SetIndexBuffer(0,pHMA);
SetIndexStyle(0,DRAW_NONE);
SetIndexBuffer(1,HMA);
}
●首先计算pHMA,然后使用iMAOnArray计算HMA
int OnCalculate (const int rates_total,当使用短期MA时,可以使用HMA来获得平滑且快速的反应。
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[])
{
int i,limit=Bars-IndicatorCounted();
for(i=limit-1;i>=0;i–){
pHMA[i] = iMA(NULL,PERIOD_CURRENT,(period/2),0,Method,PRICE_CLOSE,i)*2
– iMA(NULL,PERIOD_CURRENT,period ,0,Method,PRICE_CLOSE,i);
}
for(i=limit-1;i>=0;i–){
HMA[i]=iMAOnArray(pHMA,0,MathSqrt(period),0,Method,i);
}
return(0);}
哪些贵金属平台好?不错的贵金属交易汇平台推荐:哪些贵金属平台好?2023年平台最新排名
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
本文相关:无相关信息
留言与评论(共有 0 条评论) |