
この関数はチャートではなく配列(インジケーターや自作値)にバンドを適用したい場合に使用します
出力は1本の値のみなので、通常はループして配列として取得する処理が必要
- 概要
iBandsOnArray
は、価格データや他のインジケーター値を格納した配列上に、ボリンジャーバンドを計算して適用する関数です。- 通常の
iBands
がチャート上の価格に適用されるのに対し、こちらは任意のデータ配列に対して計算できる点が大きな特徴です。
- 特徴
- カスタムインジケーターや独自ロジックで生成したデータにもバンドを適用可能
- 実行前に
ArraySetAsSeries()
を適切に設定する必要あり - 上限・下限・中央バンドを計算し、インジケーターラインやEA判断に応用可能
- 通常の
iBands
より柔軟性が高く、高度な分析や戦略構築に有用
目次
構文
double iBandsOnArray(
double array[],
int total,
int period,
double deviation,
int bands_shift,
int mode,
int shift
);
パラメータ名 | 内容 |
---|---|
array[] | 対象となるデータ配列。 インデックス0が最新バーです。 |
total | 使用するデータのバー数(ArraySize(array) などで指定) |
period | ボリンジャーバンドの計算期間(例:20) |
deviation | 標準偏差の倍率(例:2.0) |
bands_shift | バンドのシフト(通常は0) |
mode | 取得対象のラインMODE_MAIN MODE_UPPER MODE_LOWER |
shift | シフト取得するバーの位置0 =現在, 1 =1本前… |
使用例
double dataArray[1000];
ArraySetAsSeries(dataArray, true); // インデックス0が最新
// 例:RSIデータを配列に格納
for (int i = 0; i < 1000; i++) {
dataArray[i] = iRSI(NULL, 0, 14, PRICE_CLOSE, i);
}
// ボリンジャーバンドの上限を取得(RSIに対して)
double upperBand = iBandsOnArray(dataArray, 1000, 20, 2.0, 0, MODE_UPPER, 0);
// 中央線や下限も同様に取得可能
double middleBand = iBandsOnArray(dataArray, 1000, 20, 2.0, 0, MODE_MAIN, 0);
double lowerBand = iBandsOnArray(dataArray, 1000, 20, 2.0, 0, MODE_LOWER, 0);
コメント