iBandsOnArray()関数は、ユーザーが自由に作成した配列を基にして、ボリンジャーバンド(Bollinger Band)の値を算出するために使用します。
iBandsOnArray()関数は、以下のように定義されています。
double iBandsOnArray(
double array[],
int total,
int period,
double deviation,
int bands_shift,
int mode,
int shift
);
各引数の意味は、以下のとおりです。
- double array[]
ボリンジャーバンドを算出する配列名を指定します。 - int total
ボリンジャーバンドを算出する配列の要素数を指定します。
「0」と記述すると、配列全体(=すべての要素)を基にしてボリンジャーバンドを算出します。 - int period
中間線の値を計算する期間を指定します。 - double deviation
上方バンドと下方バンドの値は、以下の計算式により算出されます。
上方バンド:中間線の値+(標準偏差×掛け率)
下方バンド:中間線の値-(標準偏差×掛け率)
この引数では、上記計算式の「掛け率」の値を指定します。 - int bands_shift
算出したボリンジャーバンドの表示を右方向にシフト(ずらす)するバーの個数を指定します。 - int mode
ライン番号を指定します。
中間線の値を取得したい場合は「0」と記述します。
上方バンドの値を取得したい場合は「1」と記述します。
下方バンドの値を取得したい場合は「2」と記述します。 - int shift
算出したボリンジャーバンドの値を取得したいバーの位置を指定します。
算出したボリンジャーバンドの値を取得したいバーが現在のバーであれば「0」、1本前のバーであれば「1」、2本前のバーであれば「2」……と記述します。
注意点
iBands()関数とは異なって、iBandsOnArray()関数は、通貨ペア名や時間軸や適用価格のデータを取得しません。
したがって、iBandsOnArray()関数でボリンジャーバンドの値を算出するためには、あらかじめ価格データを用意しておかなければなりません。
ボリンジャーバンドは、左から右へ(=古い価格データから新しい価格データに向かって)計算されます。右から左へ(=新しい価格データから古い価格データへ向かって)ボリンジャーバンドを計算するためには、ArraySetAsSeries()関数(詳細は「こちら」を参照してください。)を使用します。
具体例
配列Buffer[]を基に算出した現在のバーのボリンジャーバンド(上方バンド)の値を取得したい場合は、以下のように記述します。
double Upper = iBandsOnArray(Buffer,0,20,2,0,1,0);