テクニカル指標の値を簡単に取得するためのモジュール

概要

 MQL4にはテクニカル指標を計算するための組み込み関数が用意されていますが、これを利用するのはかなり手間がかかります。これらの組み込み関数は計算に必要な引数が多く、コードを記述するのに時間がかかります。また、引数が多いことで1行のコード自体も長くなりがちで、可読性が悪くなります。
 これらの問題を解決するために、もっと簡単にテクニカル指標を計算するためのモジュールを作成しました。

準備

Githubからファイルをダウンロードして下さい。StandardIndicatorsに関するファイルは2017/07/26時点で29ファイルあります。

MT4のデータフォルダを開き、ダウンロードしたファイルを全てMQL4/Include/mql4_modules/StandardIndicatorsフォルダの中に保存します。

StandardIndicatorsではEnvモジュールも使用しています。Envモジュールも用意してください。

mql4のコード内でStandardIndicators.mqhをincludeしたら準備完了です。

#include <mql4_modules/StandardIndicators/StandardIndicators.mqh>

使い方

 移動平均線を計算する例を紹介します。

double ma1, ma2;

// 通常の書き方
ma1 = iMA(_Symbol, 0, 20, 0, MODE_SMA, PRICE_CLOSE, 0);

// StandardIndicatorsモジュールを使った書き方
MA ma = new MA();
ma2 = ma::Get();

Getメソッドを使用することでテクニカル指標の値が取得できます。1つ前のローソク足の時点での移動平均線の値を取得するには、引数を指定します。

// 1つ前のローソク足でのMAの値を取得する。
double ma_shift1 = ma::Get(1);

移動平均線の場合はデフォルトで20SMAを取得するようになっています。もし他の移動平均線の値を取得したい場合には、Getメソッドを実行する前に、MAクラスのメンバ変数の値を変更します。

// 100EMAの値を取得する
ma.period = 30;
ma.ma_method = MODE_EMA
double ema30 = ma::Get();

インジケーターの値をまとめて複数取得することもできます。第一引数に結果を受け取る配列、第二引数に計算の開始位置、第三引数に件数を指定して使用します。第二引数に指定したローソク足から、第三引数で指定した件数分の計算結果が、第一引数の配列に代入されます。例えば第二引数に1、第三引数に3を指定した場合、1本前、2本前、3本前のインジケーターの値が代入されます。

double ma_arr[];
ma::Get(ma_arr, 0, 3);

Print(ma_arr[0]); // 0本前(最新)のローソク足の値
Print(ma_arr[1]); // 1本前のローソク足の値
Print(ma_arr[2]); // 2本前のローソク足の値

移動平均線以外のテクニカル指標に関しても同様に利用可能です。MQL4に関数が定義されているほとんどのテクニカル指標が計算可能となっております。

arrow_upward