2012年11月29日

EMAのパラメータは計算する区間の日数じゃない!!!!その本当の意味とは!?

今日、Twitterでこんなことをつぶやいていました。

ここで「ほんとに意味ないのかな?」と思いよく考えてみることに。とりあえずググる。


単純移動平均線は、全てのデータを平等に扱い、平均値を計算します。すなわち、100日単純移動平均線は、100日前の数字も昨日の数字も平等に扱い、合計したものを100で割って計算します。
しかしながら、現在以降の相場変動を予想する上では、100日前の数字と前日の数字を平等に扱うのではなく、直近の値動きを「重視」し、過去の値動きを若干「軽視」した方が、より精度の高い予想ができます。これが指数平滑移動平均線の考え方です。


EMA(指数平滑移動平均線)は、使い方や売買の判断方法は単純移動平均線と同じですが、直近の価格に比重をかけて算出する為、SMA(単純移動平均線)に比べ直近の動きに敏感に反応します。
EMA(指数平滑移動平均線)は、以下の計算式で算出されています。
  一日目の計算方法は、単純移動平均と同じで、対象期間における終値の平均
  二日目以降を「前日の指数平滑平均+k×(当日終値-前日の指数平滑平均)」
  k=2÷(n+1)、 n=期間


そして、MT4の自分のGMMAのプログラムとその引用元であるMoving Averages.mq4のコードを眺めていると...
void ema()
  {
   double pr=2.0/(MA_Period+1);
   int    pos=Bars-2;
   if(ExtCountedBars>2) pos=Bars-ExtCountedBars-1;
//---- main calculation loop
   while(pos>=0)
     {
      if(pos==Bars-2) ExtMapBuffer[pos+1]=Close[pos+1];
      ExtMapBuffer[pos]=Close[pos]*pr+ExtMapBuffer[pos+1]*(1-pr);
     pos--;
     }
  }
と思いつきました。いや、前からなんとなくは思っていたのですが、上にツイートしたことを感覚的にとらえてるだけで特に深く考えずに使っていたんですよね。IIRフィルタというのは翻訳すると無限インパルス応答フィルタです。信号処理という学問分野の理論で、まぁ詳しい説明はWikipediaのIIRフィルタの解説に譲るとして、簡単に解説すると、


IIRフィルタは無限の過去の値から結果を計算するシステム


です。つまり、例えば200本のローソク足を表示するチャートの場合、どんなnを選んでも、200本前のEMAの値(とその計算に使った値段)も現在のEMAの値に含まれていることになるんです。さっきググって出てきたEMAの解説はほとんど~日間のEMAと記述してあり、IIRフィルタの本質と違うんですよね。ここまできたらEMAを計算するIIRフィルタを作ってインパルス応答を見てみようと思いました。EMAの計算式からIIRフィルタのシステムにすると、下記の図のようになります。説明は意味不明になるので省略。とりあえず、EMAのIIRフィルタは下記のようになるんだな、ということがわかってもらえればいいです。



普段使っているGMMAからパラメータを選択し、n=3, 5, 15, 30, 60を、そして長い期間のEMAは本当に意味がないのかどうか調べるためにn=100のインパルス応答を調べてみました。下記にそれら5つのインパルス応答をグラフにしたものを示します。

見方は、一番左が現在の値段、右にいくにつれ過去の値段になっていきます。棒の高さでその値段をどれだけ織り込むか、を表していると思ってください。


n=3のとき。もうすでに3じゃないです!グラフでは過去の15本くらい織り込んでいるのが見えていますが、理論上は無限大の過去の値を使います。計算精度の問題なのか、それともグラフの描画の問題なのか、15以上の部分はグラフには見えていません。


n=5のとき。だんだん延びていきます。



n=15のとき。


n=30のとき。ここまでくると、過去50本目でも結構使っていることがわかります。



n=60のとき。100本前の値も結構強いです!


そして最後にn=100のとき。こうして考えてみると100本前のも結構強く織り込むんですね。これは新たな発見でした。



ここまで書いて調子に乗ってこんなことをツイートしました。


で、この記事を書いたときには、「【投機投資クラスタ拡散希望】って付けてツイートして拡散してもらおうw」なんてたくらんだり。Wikipediaにテクニカル分析で指数移動平均線のことが書いてあったことをうっすら思い出し、もう一度、確認のために読みに行ったら...

おぉ...同じこと書いてありますね...調子に乗ってすいませんでしたorz


...というわけで、上記ツイートのWikipediaのページから、EMAの本質を引用すると、

N 日間の EMA といった場合の N は単に係数αを示すに過ぎず、実際の計算は N 日間のデータだけでは済まない。ただし、直近の N 日間のデータが EMA において 86 %の重みをもつ。

ということらしいです。EMAを利用する場合、上記のことだけ頭の片隅に置いておけばよいかと思います。以上。


拡散希望(ボソッ...

0 件のコメント:

コメントを投稿