MT5のタイムフレームをMT4で使うためのMQL4/MQL5共通EAライブラリの拡張

MT4とMT5の違いの一つに、タイムフレームの数があります。

MT4で対応しているタイムフレームは、M1,M5,M15,M30,H1,H4,D1,W1,MN1の9個ですが、MT5ではさらに M2,M3,M4,M6,M10,M12,M20,H2,H3,H6,M8,M12 の12個が追加されています。

そんなにたくさんのタイムフレームをどう使い分けるのか、という疑問もありますが、ネットで調べると、MT4で対応していないタイムフレームを使おうとする記事がいくつか見つかります。全く需要がないわけでもなさそうです。

筆者は基本的にMT5でEAを開発して、それをMT4で動かしています。そのため、どちらでも同じソースプログラムが使えるようにと、MQL4/MQL5共通EAライブラリを作りました。

ただ、MT5で色々とタイムフレームを変えてみて、例えば、10分足がいいかなと思っても、MT4では10分足に対応していないので、そのままでは動きません。

MT4でも、1分足データから10分足データを作って、オフラインチャートから強引にEAを動かすということもできるようですが、あまり面倒なことはしたくありません。

今回の記事では、拙作のMQL4/MQL5共通EAライブラリに追加してインクルードするだけで、MT5のタイムフレームをMT4で使えるようにする方法を紹介します。

まずは、「新メタトレ実践本用のMQL4/MQL5共通ライブラリ(β版)」で取り上げたEAのプログラムです。

このEAは、ファイルの拡張子を「mq4」にすればMT4で、「mq5」にすればMT5でコンパイルし、動かすことができます。ただし、チャートに挿入したタイムフレームのテクニカル指標を使うので、MT4では対応している9種類のタイムフレームしか使えません。

チャートのタイムフレームと関係なく、決まったタイムフレームのテクニカル指標を使いたい場合、iMomentum()関数の2番目の引数にタイムフレームの定数を代入します。例えば、10分足にしたければ、次のようにします。

MT5は10分足に対応しているので、この変更だけで10分足のテクニカル指標を使うことができます。ただし、MT4の場合、コンパイルは通るのですが、10分足に対応していないので、iMomentum()の値は常に0になってしまい、EAとして機能しません。

そこで、新たに作った次のヘッダファイルをインクルードしてみます。

あと、iMmentum()関数の最初の引数「_Symbol」と、4番目の引数「PRICE_CLOSE」を削除してみます。全体のコードは次のようになります。

変更箇所は2行のみですが、このプログラムだと、MT4、MT5両方で、10分足のテクニカル指標を使ったEAとして機能します。

ただし、このライブラリはまだβ版ですので、今後変更になる可能性が高いです。またどんなテクニカル指標でも対応できるわけではなく、色々と制約があります。そのあたりについては、ライブラリの仕組みと関係するものですので、別の機会に解説したいと思います。



コメントは受け付けていません