今回は、MT5に外部から登録したカスタムインディケータを自由にEAに組み込む方法をご紹介します。
オリジナルのインディケータや関数が用意されているテクニカル指標関数以外のインディケータの計算値をEAに利用できるようになります。
登録したインディケータをEAに組み込む例 |
ここではiCustom関数を使用することで、MT5上のデータフォルダ内に配置したカスタムインディケータファイルを読み込み使用することができます。
※対象となるIndicatorファイルはコンパイルした .ex5拡張子のファイル形式でデータフォルダ下、MQL5/Indicators ディレクトリもしくはサブディレクトリ配置する必要があります。
では早速プログラムを見ていきましょう。
1.ハンドル値の取得
今回はインストール時にサンプルとして入っているCustom Moving Average (MT5データフォルダ/MQL5/indicator/Example)を読み込み、使用します。
※Custom Moving Average にはナビゲータウィンドウから”インディケータ/Example/Custom Moving Average ”とアクセスをします。
iCustom関数には使用するIndicatorのMT5上のパスを指定し、該当のIndicatorのパラメータを順番にセットします。
※パラメータを設定しない場合にはIndicatorの初期値が適用されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
//--- 入力パラメータ input int MA_Period=21; // Moving Average Period値 input int MA_Shift=0; // Moving Average Shift値 input ENUM_MA_METHOD MA_Method=MODE_SMA; //計算方法 //--- 使用変数 int MA_handle; //--- 指標ハンドル double MA_Buffer[]; //--- 指標バッファ int lineID = 0; //--- インディケータラインID // 1.EA起動時に該当のIndicatorのハンドル値を取得 int OnInit() { //--- 指標バッファマッピング MA_handle=iCustom(Symbol(), Period(), "Examples\\Custom Moving Average", MA_Period, MA_Shift, MA_Method, PRICE_CLOSE // 終値の使用 ); if( MA_handle ==INVALID_HANDLE){ Print("MA_handle = ",MA_handle," error = ",GetLastError()); } return(INIT_SUCCEEDED); } |
2.配列値の取得
iCustom関数を使用してメモリ上に展開したIndicatorからCopyBuffer関数を用いて配列コピーして計算値を使用できます。
1 2 3 4 5 6 7 8 9 10 11 |
// 2.Tick更新時に該当Indicatorの計算値を取得 Void OnTick() { //配列データの取得、時系列に配列を並替 if ((CopyBuffer(MA_handle,lineID,0,512,MA_Buffer))<0) if(!ArraySetAsSeries(MA_Buffer,true)) return; //処理 Print(MA_Buffer[0]); return; } |
※今回の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
- Tags
- MQL5