SetIndexBuffer 関数
この関数は、指定したインジケータバッファへ double型の 1次元動的配列を関連付けます。
ここで言う 1次元動的配列は、プログラム中で宣言される「double Buf[];」のことです。
データ型と構成・戻り値
bool SetIndexBuffer(①, ②);
戻り値は、関連付けが成功した場合 true、それ以外は falseを返します。
引数 [2]
SetIndexBuffer関数は 2個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | index | int | - | - | インジケータバッファの数。番号付けは 0からです。 番号は #property indicator_buffersで宣言された値より小さくする必要があります。 |
② | buffer[] | double | - | - | カスタムインジケーターのプログラムで宣言した配列。 |
使用例
SetIndexBuffer関数によるインジケータの作成
SetIndexBuffer関数を使って、各バーの終値を直線で結ぶインジケータを作成します。
コード
// OnCalculate関数を使ったインジケータの作成
#property strict
#property indicator_chart_window // チャートウィンドウに表示
#property indicator_buffers 1 // インジケータバッファの数(引数①はこの値より小さくすること)
#property indicator_color1 clrRed // 線の色
#property indicator_width1 2 // 線の太さ
#property indicator_style1 STYLE_SOLID // 線の種類
double Buf[]; // インジケータバッファの配列
int OnInit() {
SetIndexBuffer(0, Buf); // 1次元動的配列をインジケータバッファへ関連付け
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int i;
for(i=0;i<rates_total; i++) {
Buf[i]=close[i];
}
return(rates_total);
}
インジケータを実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
![](https://naruhodo-mt4.com/wp-content/uploads/2023/01/P349oncalculate.jpg)