2018年6月8日金曜日

HMA は未来を予測できるか!

Hull Moving Average 略してHMA

チャートを見るとろうそくに常に張り付いているだけでなく、なめらかさもすばらしい平均線です。

ろうそくに張り付いている → 価格との乖離が少ない
なめらか → トレンドの方向性のだましが少ない

この様なイメージです。

HMAは期間をPとすると

期間1/2PのLWMAの値の2倍 から期間 PのLWMAの値を引いた数字の配列を

もう一度期間√PのLWMAで平均化しています。


現在に近い期間1/2Pの平均を2倍して期間Pを引くと1/2Pの平均よりさらに最近の影響を受けます。過去の期間1/2Pをマイナスするイメージです。

この平均の値はろうそく足にべったり張り付きますが、

もう一度LWMAで平均化する事でさらになめらかになっています。

この中ででてくる期間は3つ 期間P 期間1/2P 期間√Pです。

期間は整数でなければなりません。 期間Pが奇数の時は誤差が出ます。(とくに小さい期間では大きく出ます。)

もう一つ平方根についても同様です。


太字のところは誤差の無いところです。
2で割り切れて平方根に誤差が無い数字は4と16ですね。

このあたりのゴールデンクロスや乖離を探求してみたいと思います。

その中で疑問が一つ!
ろうそく足の中にどれくらいの確率でHMAはいるのでしょうか

高値と安値の間にどれくらいいるかを見てみます。

datetime OldTime;
int Total,Win[17];
double I(int period=13,int shift=0)
{
double pHMA[];
ArrayResize(pHMA,period+2);
for(int i=period+1;i>=0;i--)
{
pHMA[i]= iMA(Symbol(),PERIOD_CURRENT,(period/2),0,MODE_LWMA,PRICE_CLOSE,shift)*2
- iMA(Symbol(),PERIOD_CURRENT,period ,0,MODE_LWMA,PRICE_CLOSE,shift);
}
return (iMAOnArray(pHMA,0,(int)MathSqrt(period),0,MODE_LWMA,shift));
}

void OnTick()
{
string txt=NULL;
if(Time[0]!=OldTime)
{
OldTime=Time[0];
Total++;
for(int i=1;i<=16;i++)
{
double HMA=I(i,1);
if(HMA<High[1]&&HMA>Low[1])Win[i]++;
txt+="# "+i+"  "+Win[i]+" / "+Total+"   "+(double)Win[i]/(double)Total*100+" % \n";
}
Comment(txt);
}
}

HMA期間P 1~16を期間2015~20180531、M1、USDJPYで調べてみます。

期間1は計算できていないようです。 1/2P→期間0の平均は算出できないからでしょうか

期間3,5,7,9は前後に比べ%低くなっています。1/2Pに誤差が出るからかもしれません。
偶数期間をみると期間P=6を頂点に推移しています。

P=6では80%が高値と安値の間にHMAがあるようです。
なかなかすごい事です。

HMAが上昇していてHMAよりBidが一定値低い時にはロングでエントリ-してHMAまで戻ればクローズ こんなシンプルなもので80%取れるかもしれませんね

高速EA万歳です!


0 件のコメント:

コメントを投稿