インジケータデータの移動平均線

チャート上でインジケータに対してMAを表示することがある。

何かしらインジケータが表示されたチャートに対してMAを適用すると、

  • 前のインディケータのデータ
  • 始めのインディケータのデータ

が適用価格として選択できる。

前は一番最後に適用されたインジケータ。始めは一番最初に適用されたインジケータ。
中間のインジケータは選べないので、やりたいなら他のインジケータを適用する前にMAを挟むことになる。

1つ疑問が残るのは、インジケータが複数のバッファを持つ場合、どのバッファの平均線になるのかという点。

Bollinger Bandsで試してみる。

色を変えた期間1のSMAがミドルラインと一致することから、ミドルラインのバッファが使われていることが確認できる。

Heiken Ashiで試してみる。

期間1のSMAがHeiken Ashiの始値と一致することから、始値が使われていることが確認できる。

つまり、バッファ番号0のものが使われるとわかる。

では、バッファ番号0以外のものを使った平均値を取得したい場合はどうすれば良いか。
これはそれ用のインジケータでも無ければ出来ないと思う。

EAの中で、とりあえず点として平均値を計算したい場合であっても自分で計算するしか無い。
MQL4であればiMAOnArray関数が使用できたが、MQL5ではこれが無くなってしまった。

https://www.mql5.com/en/forum/43562

ここで書かれているような関数を使うと良いと思う。

SMAであれば、CopyBufferで必要な計算期間分のバッファをコピーして計算すれば良い。
ただし、EMAやSMMAに関してはチャートに表示されている全てのバーのデータを使うという厄介な計算式である事に留意しなければならない。
Heiken Ashiの始値に対する10EMAを求めたい時、チャートに表示させたEMAと、10個のHeiken Ashi Openを使って計算したEMAの値はズレてしまうという事。

どれ程ズレるか見てみよう。

Heiken Ashi OpenのEMAを表示している。
Moving Averageが示す値は、130.0058。
EAの中で計算させたのが、見づらいけどCommentで表示していて、

  • 10個のHeiken Ashi Openで計算したEMA:130.0262…
  • 100個のHeiken Ashi Openで計算したEMA:130.0058…

の2つ。2pips程度ズレている。

EMA、SMMAを計算する場合は、期間指定に対する総データ数に注意すべし。
どれくらいのデータが必要かは場合によりけり。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする