今回は、MT5に外部から登録したカスタムインディケータを自由にEAに組み込む方法をご紹介します。
オリジナルのインディケータや関数が用意されているテクニカル指標関数以外のインディケータの計算値をEAに利用できるようになります。

登録したインディケータをEAに組み込む例

ここではiCustom関数を使用することで、MT5上のデータフォルダ内に配置したカスタムインディケータファイルを読み込み使用することができます。
※対象となるIndicatorファイルはコンパイルした .ex5拡張子のファイル形式でデータフォルダ下、MQL5/Indicators ディレクトリもしくはサブディレクトリ配置する必要があります。

MT5クライアントからデータフォルダ内のMQ5/Indicatorファイルへのアクセス

では早速プログラムを見ていきましょう。

1.ハンドル値の取得
今回はインストール時にサンプルとして入っているCustom Moving Average (MT5データフォルダ/MQL5/indicator/Example)を読み込み、使用します。


※Custom Moving Average にはナビゲータウィンドウから”インディケータ/Example/Custom Moving Average ”とアクセスをします。

iCustom関数には使用するIndicatorのMT5上のパスを指定し、該当のIndicatorのパラメータを順番にセットします。
※パラメータを設定しない場合にはIndicatorの初期値が適用されます。

2.配列値の取得
iCustom関数を使用してメモリ上に展開したIndicatorからCopyBuffer関数を用いて配列コピーして計算値を使用できます。

※今回のEAではメモリ上に展開したインディケータのデータをEAの取引に利用する目的のため、チャート上への描画処理をしません。

MQL5: iCustom関数について
https://www.mql5.com/ja/docs/indicators/icustom

MT4にも同じ関数がありますが、 引数が異なり、 取得できる値は指定した1時点でのデータを取得する形式となります。都度関数を呼び出し、計算が必要です。
iCustom関数: https://docs.mql4.com/indicators/icustom
※MT4では取得するIndicator LineのIDとシフト値が必要になります。

MT5ではインディケータのハンドル値を使用して、複数の指標ラインの配列を効率良く一括で取得可能です。
※参考記事:第五回テクニカル分析指標を使って取引しよう!

このような方法で、どのようなIndicator でもEA上でデータを読み込むことが可能です。

またMT5のCustom Indicator については、下記のMQL5のリンクから様々なIndicatorを見つけることができます。
自分の目的に合ったIndicatorを見つけて取引に利用してみましょう!

MQL5 : MetaTrader 5のためのMQL5テクニカルインディケーター
https://www.mql5.com/ja/code/mt5/indicators