#resourceを使ってインジケーターをプログラムに取り込む方法

今日はMQL4の#resourceを使ったテクニックを紹介します。

こんな経験ありませんか?

EAやインジケーターを作っていると、iCustom関数を使って他のインジケーターの計算結果を呼び出すことがあるかと思います。

自分で使う分には何も問題は無いのですが、作成したプログラムを誰かに配布するとき、iCustom関数で呼び出しているインジケーターも一緒に配布する必要があります。

iCustom関数は同じMT4に入っているインジケーターしか呼び出せないので、受け取ったユーザーの環境に呼び出したいインジケーターが無いと動かないからです。

しかし、毎回インジケーターを用意して配布は少々面倒です。

それに必要なファイルが増えると、設定方法の説明も複雑になっちゃいますよね。

それを解決できるのが、#resourceを使ったインジケーターの取り込みです。

#resourceとは?

音声、画像、インジケーターなどの外部ファイルをコンパイル時にex4ファイルの中へ取り込むことができる機能です。

外部ファイルの情報はコンパイルされたex4の中に含まれているので、外部ファイルを一緒に配布する必要がなくなります。

使い方

まず#resourceを使って取り込みたいファイル名を指定します。

下の例はカスタムインジケーターの「Heiken Ashi」をIndicatorsフォルダから取り込んでいます。

#resource "\\Indicators\\Heiken Ashi.ex4";

ちなみにHeikenは誤字じゃないです。

なぜか昔からMT4の平均足インジケーターはこの名前でした。
(メタクォーツ社のエンジニアのタイポ?)

次にiCustomで先程読み込んだファイル名を指定します。

iCustom関数は第3引数がインジケーター名の指定なので、ここを先程のファイル名に書き換えます。

// 読み込んだHeiken Ashiから平均足始値を取得
double heiken_open = iCustom(_Symbol, 0, "::Indicators\\Heiken Ashi.ex4", 2, 0);

// 読み込んだHeiken Ashiから平均足終値を取得
double heiken_close = iCustom(_Symbol, 0, "::Indicators\\Heiken Ashi.ex4", 3, 0);

少し見慣れない書き方ですね。

読み込まれたファイルを使うことを明示するため、コロン2つから書き始める必要があるので注意しましょう。

以上が#resourceの使い方です。

他にもオリジナルの音声ファイルを読み込んでPlaySound関数で再生させる方法や、画像ファイルを読み込んでチャートにアイコンを表示させたりできます。

いろいろな用途があるので覚えて損はない機能です。

arrow_upward