今回は、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(),
“ExamplesCustom 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を見つけて取引に利用してみましょう!
Originally posted 2019-08-12 13:33:30.