MT4入門(12) – 組込みインディケータの使い方(2)

MetaTrader4入門の第12回目です。
前回説明した組込みインディケータは、プライスに直接適用させるものですが、MQL4では、以下のように配列、つまりインディケータバッファに対して適用させる関数が用意されています。
iBandsOnArray() – Bollinger Bands on buffer
iCCIOnArray() – Commodity Channel Index on buffer
iEnvelopesOnArray() – Envelopes on buffer
iMomentumOnArray() – Momentum on buffer
iMAOnArray() – Moving Average on buffer
iRSIOnArray() – Relative Strength Index on buffer
iStdDevOnArray() – Standard Deviation on buffer
ここでは、簡単な例として、モメンタムと移動平均を組み合わせたインディケータを考えてみます。
モメンタムは一定期間前との差を取ったものなので、反応の早いオシレータですが、その分デコボコしているので、さらに移動平均を取って滑らかにしてみます。
この場合、まず、バッファを二つ用意しておきます。
//—- インディケータバッファ
double Buf0[];
double Buf1[];

そして、これまでと同様にinit()関数中でインディケータへの割り当てを行います。
//—- バッファのインディケータへの割り当て
SetIndexBuffer(0, Buf0);
SetIndexBuffer(1, Buf1);

まずは、iMomentum()関数で終値に対してモメンタムを取り、この結果を Buf0[] というバッファに代入します。以下の例は25日モメンタムの場合です。
for(i=limit-1; i>=0; i–)
{
  Buf0[i] = iMomentum(NULL,0,25,PRICE_CLOSE,i); //25日モメンタム
}

iMomentum()関数のパラメータは前回のiMAとだいたい同じで、
symbol, timeframe, period, applied_price, shift
の順です。3番目のperiod のところに何バー前との差を取るかを指定します。
さらに、このインディケータバッファに対して移動平均を取るために iMAOnArray()という関数を使います。iMAOnArray()関数のパラメータは、次のようになっています。
double iMAOnArray( double array[], int total, int period, int ma_shift, int ma_method, int shift)
パラメータ:
array[] : 処理対象のインディケータバッファ名。
total : バッファ中で計算するバーの数、0を指定するとバッファ全体を計算。
period : 移動平均を取る期間。
ma_shift : 移動平均をシフトする(右方向へずらす)バーの数。
ma_method : 移動平均の方法。
applied_price : 適用する価格。
shift : 現在バーからのシフト。
iMA()と比べて最初の二つのパラメータが異なっているだけです。例えば、Buf0[]に対して5日EMAを取るコードは以下のようになります。
for(i=limit-1; i>=0; i–)
{
  Buf1[i] = iMAOnArray(Buf0,0,10,0,MODE_EMA,i); //10日EMA
}

iMomentum() の場合と同じように for文の中に書いてやりますが、ここで iMomentum()とiMAOnArray()は別々のfor文の中に書く必要があります。一緒に書いてもよさそうな気がしますが、iMAOnArray()はバッファ全体に適用するので、適用するバッファの値は予め計算されている必要があるためです。
これで、Buf1[]にモメンタムと移動平均を組み合わせたインディケータが作成されました。サンプルプログラム Sample9_Ind.mq4 は、25日モメンタムのみのインディケータと、さらに10日EMAを取った組み合わせインディケータが表示されます。
Download Sample9_Ind.mq4
チャートにアタッチするとこんな感じになります。

組込みインディケータについては、まだまだ説明することがあるのですが、一旦、これで終わりにします。今後の例で出てきた都度、説明することにします。
次回からは ExpertAdvisor に入る準備として、売買シグナルをインディケータとしてチャート上に表示させる方法について説明します。
にほんブログ村 為替ブログへ為替ブログランキング 現在10位
最新のテクニカル分析やトレーディングシステムの記事が満載です。



コメントは受け付けていません