今回は、テクニカル指標関数についてです。
移動平均、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つの引数は固定されています。