見出し画像

Block EA 今日のワンポイント:テクニカル指標関数

ブロックを組み合わせてMT4/MT5のEAを作成するBlock EA、今日のワンポイントです。

今回は、テクニカル指標関数についてです。

移動平均、RSI、ボリンジャーバンドなどのテクニカル指標は、EAを作る上で欠かせないものです。MT4/MT5では多くのテクニカル指標が関数として用意されています。

Block EAでは、それぞれのテクニカル指標関数をブロックに対応させて、簡単に使えるようにしています。

現在のバージョンで対応しているテクニカル指標は以下の通りです。ツールボックスにトレンド系とオシレーター系に分けて配置しています。

画像1

画像2

使い方は簡単です。ブロックを選んで適当なパラメータをセットし、それを変数などに代入するだけです。

例えば、

画像6

というブロックは、現在のチャートに対して期間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のブロックでは、

画像3

のようにパラメータを変えるところは4か所しかありません。つまり、iMA()に渡す3つの引数は固定されています

固定されているパラメータは以下の3つです。

symbol = _Symbol;
ma_shift = 0;
applied_price = PRICE_CLOSE;

symbolはトレードするシンボル(通貨ペア)です。EAはチャートに挿入して動かすので、基本的に挿入したチャートのシンボルを取引します。なので、テクニカル指標の対象となるシンボルも、挿入したチャートのシンボルという意味の「_Symbol」に固定しています。

ma_shiftは、移動平均自体をシフトするパラメータですが、これは、最後のshiftのパラメータで代用できるものなので、常に「」としています。

applied_priceは、適用させる4本値の種類を指定するものです。始値、高値、安値なども指定できるのですが、通常、終値を使うことが多いので、終値を表す「PRICE_CLOSE」に固定しています。

ほかのテクニカル指標でも、これらのパラメータは固定してあります。

一方、ブロックで設定できるパラメータは、timeframema_periodma_methodshiftの4つです。

timeframeは、ブロックの「?チャートの」の部分に対応しています。

画像4

デフォルトでは「現在」となっていますが、時間足が選択できるようになっています。それぞれ対応するタイムフレーム定数に置き換えてiMA()のtimeframeの引数に渡されます。

なお、ここで選択できるタイムフレームは、MT4/MT5共通のものだけです。MT5独自のタイムフレームを選択したい場合、MQLデータのツールボックスに「2分足」と書かれたブロックがあるので、それを「現在」のところに組み込んでください。

画像5

ma_periodは、移動平均の期間で、「期間」のパラメータで設定します。数値を入れてもいいですし、変数を入れてもOKです。

ma_methodは、移動平均の種類を表します。「種類」のパラメータで設定します。

shiftは、どのバーでの移動平均を求めるかを表すものです。「?本前の値」のパラメータで設定します。

移動平均の種類でちょっと補足説明しておきます。

画像7

MT4/MT5ともにiMA()で選べる移動平均の種類は、SMAEMASMMALWMAの4つです。ただ、このブロックでは、さらにDEMATEMAが選べるようになっています。これは何かというと、MT5で追加されたiDEMA()iTEMA()というテクニカル指標のことです。

DEMA、TEMAについては、以下の記事をご覧ください。

そもそもiMA()とは別の関数なので別のブロックにすべきですが、EMAから派生した移動平均で期間だけがパラメータになっているので、移動平均の種類のところで選択できるようにしてみました。

ただ、テクニカル指標のツールボックスに「適応型移動平均」「フラクタル適応型移動平均」「可変インデックス動的平均」というブロックがあります。これらも移動平均の一種ですが、ちょっとアルゴリズムが複雑でパラメータの種類も違うので、それぞれ別のブロックにしています。

これらの適応型移動平均については、以下の記事をご覧ください。

なお、MT5独自のタイムフレーム、および、MT5独自のテクニカル指標については、そのままではMT4では利用できません。ただ、共通ライブラリのオプションで利用できる方法があります。詳しいことは別の機会に紹介します。


この記事が気に入ったらサポートをしてみませんか?