hma

hma最新版

官方版无广告111

更新日期:2022-03-14分类标签: 语言:中文平台:没限制

6 人已下载 手机查看

//+——————————————————————+
//| HMA2.mq4 |
//| jnr314 |
//| https://www.mql5.com |
//+——————————————————————+
#property copyright “jnr314”
#property link “https://www.mql5.com”
#property version “1.00”
#property strict

#include <MovingAverages.mqh>

//The Hull Moving Average (HMA), developed by Alan Hull, is an extreme-
//ly fast and smooth moving average that almost eliminates lag altoge-
//ther and manages to improve smoothing at the same time.To calculate
//it, firts, you have to calculate a difference between two LWMA of
//periods p/2 and p and then calculate another LWMA from this differen-
//ce but with a period of square root of p

//— indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Black
#property indicator_style1 0
#property indicator_width1 1
#property indicator_color2 DeepSkyBlue
#property indicator_style2 0
#property indicator_width2 2

//—- input parameters
input int HMAPeriod=13; // Period
input int HMAShift=0; // Shift
input ENUM_MA_METHOD InpMAMethod=MODE_LWMA; // Method
//Actually, the HMA uses LWMA but you can change it if you want
//writting MODE_SMA (simple moving average)or MODE_EMA (exponential
//moving average) or MODE_SMMA (smoothed moving average) instead of
//MODE_LWMA (linear-weighted moving average).
input ENUM_APPLIED_PRICE InpMAPrice=5; // Price
//Here you chose the price which the moving averages will be applied:
//0-close price, 1-open price, 2-high price, 3-low price, 4- median
//price , 5-typical price, 6-weighted price.

//—- indicator buffers
double HMABuffer[];
double ExtSignalBuffer[];

//— right input parameters flag
bool ExtParameters=false;
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
int OnInit(void)
{
IndicatorDigits(Digits+1);
//— drawing settings
SetIndexStyle(0,DRAW_NONE);//If you want see the line (that is the
//difference between the two LWMAs) on the chart, change in this line,
//DRAW_NONE to DRAW_LINE. This line is very similar to the final HMA
//line for this reason I prefer that it stay invisible
SetIndexShift(0,HMAShift);
SetIndexStyle(1,DRAW_LINE);
SetIndexShift(1,HMAShift);
SetIndexDrawBegin(1,HMAPeriod);
//— indicator buffers mapping
SetIndexBuffer(0,HMABuffer);
SetIndexBuffer(1,ExtSignalBuffer);
//— name for indicator label
IndicatorShortName(“Hull Moving Average(“+IntegerToString(HMAPeriod)
+”,”+IntegerToString(HMAShift)+”)”);
SetIndexLabel(0,”Hull Moving Average”);
//— check for input parameters
if(HMAPeriod<=1)
{
Print(“Wrong input parameters”);
ExtParameters=false;
return(INIT_FAILED);
}
else
ExtParameters=true;
//— initialization done
return(INIT_SUCCEEDED);
}
//+——————————————————————+
//| Hull Moving Average |
//+——————————————————————+
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[])
{
int i,limit;
int p = (int)floor(MathSqrt(HMAPeriod));
int medp = (int)floor(HMAPeriod/2);
//—
if(rates_total<=HMAPeriod || !ExtParameters)
return(0);
//— last counted bar will be recounted
limit=rates_total-prev_calculated;
if(prev_calculated>0)
limit++;

//— hull moving average 1st buffer
for(i=0; i<limit; i++)
HMABuffer[i]=2*iMA(NULL,0,medp,0,InpMAMethod,InpMAPrice,i)
-iMA(NULL,0,HMAPeriod,0,InpMAMethod,InpMAPrice,i);
//— hull moving average 2nd buffer
int weightsum;
for(i=p;i>0;i–)
weightsum+=i;
LinearWeightedMAOnBuffer(rates_total,prev_calculated,0,p,HMABuffer,ExtSignalBuffer,weightsum);
//— done
return(rates_total);
}
//+——————————————————————+

如果你对文件有了解,请帮助投票!

If you are familiar with the file, please help vote!

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位投票人。

相关资源

暂无评论

暂无评论...
Ads Blocker Image Powered by Code Help Pro

检测到广告拦截程序!!!Ads Blocker Detected!!!

我们检测到您正在使用扩展来屏蔽广告。请通过禁用这些广告屏蔽程序或者把网站加入白名单来支持我们。

We have detected that you are using an extension to block advertisements. Please support us by disabling these advertising blocking programs or adding the website to the whitelist.