MTFにする方法

自分でインジケーターやEAを作る人にとって、MTFを使いたくなる場面は多いと思います。

MTFは再処理で実装するのが正解だったり言われておりますが、実は簡単に実装する方法が何個かあります。

  • 再帰処理
  • パラメーターを調整
  • iBarShift

再帰処理

再帰処理は自分で自分を呼び出す方法で、処理が複雑になりやすく、可読性も低くレベルが高い方法ですので、この方法を使うのはプロ中のプロだけだと思ってください。
ですので、僕は再帰処理を使いませんというか、使えません。

パラメータ調整

パラメータを調整して強引にMTFにする方法です。
例えば5分足チャートに20MAをベースに考えて、同じ移動平均線を1分足と15分足に表示させる場合はこうなります。

1分足チャートでは60MA、5分足チャートでは20MA、15分足チャートでは4MAを設定して、赤枠で囲っている箇所が大体同じ時間を表しています。

大体同じようなラインになっていることが分かりますので、こういう方法でパラメータを調整して強引にMTF化する方法もありますが、割り切れないパラメータ出会ったり、MACDの様に複数のパラメータがある場合にうまくパラメータを和振り当てられないデメリットもありますが、詳細なデータを取得できるメリットもあります。

iBarShift

画像はiBarShiftで組んだMTF製のMAです。
分かりやすいように1枚目の画像と同じ場所らへんを囲っています。

インジケーターのパラメーターを毎回変更させるのはさすがに面倒なので、僕はこの方法で簡易的なMTFを使うことが多いです。

コードはシンプルで簡単なのでコピペで使えますので、修正して実装してください。

この方法は表示させている時間のチャートよりも上位のMTFに対してはあまり問題はなく、データも漏れなく取れていますし、ギザギザしたラインで表示されるのが特徴です。

表示させているチャートよりも下位のMTFを設定した場合にちょと問題が起きてしまうのが難点です。

画像で言うところの15分足のチャートがそうなんですが、これは15分足チャートに5分のMTFを設定しているラインとなります。
1枚目の画像と見比べてもらえば分かるのですが、表示されているラインの位置が少し違うのです。

原因としては下記表を見ながら説明していきます。
ややこしいので伝わるかな・・・

①1分足チャートに上位MTF

一番左の表は、1分足チャートにMTF=5のデータを表示させたパターンです。
表中の文字はMAなどのデータだと思ってください。

MTFで作られたラインがギザギザになる理由としては、同じデータが連続するので階段状に見えることが原因です。

同じデータが連続する理由として、MTF=5は5分足からデータが作られますので、5分足のデータからは5の倍数となる時間に該当するデータしか取得できません。

このパターンについては問題なく表示できています。

②5分足チャートに下位MTF

表の真ん中のこのパターン、一件するとラインが表示されているので正しく表示されているように見えるのですが、実際にはちょっとおかしなデータが表示されているのです。

表示している時間軸と同じMTFのラインを出して比較してみるとよく分かるので見てください。

白いラインが15分足チャートにMTF=5を設定したラインで、青いラインがMTF=15を設定したラインとなります。

どうしてラインがずれてしまうのかと言うと、ラインの元になるデータの作り方に問題があるからです。

本来あるべきデータとしては事項のデータである表の右側のデータが正解なのですが、このパターンのデータと比較してみてください。

このパターンのデータはMTF=1で作られたデータから、5の倍数に合致するデータのみ抽出してラインを作っているのです。

ラインを作るデータが連続したデータから取得されておらず、チグハグなデータで無理矢理ラインを描画しているのでデータがおかしくラインがずれてしまう現象になるわけです。

言葉で言うと分かりにくい話しなので、伝わるかどうか分かりませんが、移動平均とかインジケーターというのは、時間軸に応じた連続したデータで形成されていますが、このパターンは表示されている時間軸に合致する部分のデータだけ抜き取っているので、全く信用性のないデータとなっていることがお分かり頂けるでしょうか。

表示している時間軸以下のMTFを設定するときは、このような現象が起きていることをご理解ください。

③5分足チャートに同じMTF

表の右のパターンになります。

表示している時間軸のチャートと同じMTFを設定しているので、MTFにはなっておらず、普通の移動平均線が描画されます。

データも正しく信頼できるデータですが、このパターンを使う場合は、MTFでない普通の移動平均線を使った方が処理が軽いです。

MTF処理に限らず、インジケータの処理というのは、過去チャートのデータを描画させるためにループ処理を行い、過去データを解析し、そのデータを元にラインやら矢印やらを一定のルールに基づき表示させているため、CPUやメモリを使いますので、処理コストがかかってくるため、ご利用のPC環境によっては処理遅くなる場合があります。

よってこのパターンの場合は、MTF化したインジケーターをわざわざ使わなくても標準のインジケーターを使った方が軽い処理で済むと言う話です。

まとめ

今回は結構マニアックな話になりましたが、MTFとか部分的に追求していくと突き当たる壁だと思いましたので、記事にしてみました。

よく分からない人は読み飛ばして頂いて良い内容です(;^ω^)

今回の話を要約すると、大きく分けて2種類。

パラメータの調整で一応MTF化することができますよ。
でも、時間軸に応じてパラメーターの調整が必要になるので面倒臭いです。
また、パラメーターの調整がしにくい種類のインジケーターもあるので、万能ではありません。

iBarShiftで簡単にMTF化することが出来ますよ。
でも、表示する時間軸以上のMTF設定をしないと信頼できないデータが表示されてしまいますよ。

MTF化されたインジケーターをMTFしないのであれば重いだけなので標準のインジケーターを使った方が早いですよ。

って感じの話でした。