Block EA 今日のワンポイント:テクニカル指標関数
ブロックを組み合わせてMT4/MT5のEAを作成するBlock EA、今日のワンポイントです。
今回は、テクニカル指標関数についてです。
移動平均、RSI、ボリンジャーバンドなどのテクニカル指標は、EAを作る上で欠かせないものです。MT4/MT5では多くのテクニカル指標が関数として用意されています。
Block EAでは、それぞれのテクニカル指標関数をブロックに対応させて、簡単に使えるようにしています。
現在のバージョンで対応しているテクニカル指標は以下の通りです。ツールボックスにトレンド系とオシレーター系に分けて配置しています。
使い方は簡単です。ブロックを選んで適当なパラメータをセットし、それを変数などに代入するだけです。
例えば、
というブロックは、現在のチャートに対して期間10、種類SMAの移動平均の1本前の値をMA1という変数に代入するという意味です。
これをMQLコードに変換すると、
void Tick()
{
double MA1 = (iMA(_Symbol, (0), 10, 0, MODE_SMA, PRICE_CLOSE, 1));
}
となります。iMA()という移動平均を計算するテクニカル指標関数が呼ばれて、設定したパラメータが関数の引数に渡されていることがわかります。
ただ、「(0)」のように、普通だとわざわざ書かない括弧がついているところもあります。これはBlocklyでコードに変換するときの仕様なので、無視してください。
ところで、iMA()という関数は実際には
double iMA(
string symbol, // symbol
int timeframe, // timeframe
int ma_period, // MA averaging period
int ma_shift, // MA shift
int ma_method, // averaging method
int applied_price, // applied price
int shift // shift
);
のように7個の引数を取ります。でも、Block EAのブロックでは、
のようにパラメータを変えるところは4か所しかありません。つまり、iMA()に渡す3つの引数は固定されています。
固定されているパラメータは以下の3つです。
symbol = _Symbol;
ma_shift = 0;
applied_price = PRICE_CLOSE;
symbolはトレードするシンボル(通貨ペア)です。EAはチャートに挿入して動かすので、基本的に挿入したチャートのシンボルを取引します。なので、テクニカル指標の対象となるシンボルも、挿入したチャートのシンボルという意味の「_Symbol」に固定しています。
ma_shiftは、移動平均自体をシフトするパラメータですが、これは、最後のshiftのパラメータで代用できるものなので、常に「0」としています。
applied_priceは、適用させる4本値の種類を指定するものです。始値、高値、安値なども指定できるのですが、通常、終値を使うことが多いので、終値を表す「PRICE_CLOSE」に固定しています。
ほかのテクニカル指標でも、これらのパラメータは固定してあります。
一方、ブロックで設定できるパラメータは、timeframe、ma_period、ma_method、shiftの4つです。
timeframeは、ブロックの「?チャートの」の部分に対応しています。
デフォルトでは「現在」となっていますが、時間足が選択できるようになっています。それぞれ対応するタイムフレーム定数に置き換えてiMA()のtimeframeの引数に渡されます。
なお、ここで選択できるタイムフレームは、MT4/MT5共通のものだけです。MT5独自のタイムフレームを選択したい場合、MQLデータのツールボックスに「2分足」と書かれたブロックがあるので、それを「現在」のところに組み込んでください。
ma_periodは、移動平均の期間で、「期間」のパラメータで設定します。数値を入れてもいいですし、変数を入れてもOKです。
ma_methodは、移動平均の種類を表します。「種類」のパラメータで設定します。
shiftは、どのバーでの移動平均を求めるかを表すものです。「?本前の値」のパラメータで設定します。
移動平均の種類でちょっと補足説明しておきます。
MT4/MT5ともにiMA()で選べる移動平均の種類は、SMA、EMA、SMMA、LWMAの4つです。ただ、このブロックでは、さらにDEMA、TEMAが選べるようになっています。これは何かというと、MT5で追加されたiDEMA()、iTEMA()というテクニカル指標のことです。
DEMA、TEMAについては、以下の記事をご覧ください。
そもそもiMA()とは別の関数なので別のブロックにすべきですが、EMAから派生した移動平均で期間だけがパラメータになっているので、移動平均の種類のところで選択できるようにしてみました。
ただ、テクニカル指標のツールボックスに「適応型移動平均」「フラクタル適応型移動平均」「可変インデックス動的平均」というブロックがあります。これらも移動平均の一種ですが、ちょっとアルゴリズムが複雑でパラメータの種類も違うので、それぞれ別のブロックにしています。
これらの適応型移動平均については、以下の記事をご覧ください。
なお、MT5独自のタイムフレーム、および、MT5独自のテクニカル指標については、そのままではMT4では利用できません。ただ、共通ライブラリのオプションで利用できる方法があります。詳しいことは別の機会に紹介します。
この記事が気に入ったらサポートをしてみませんか?