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

移動平均、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つの引数は固定されています