IndicatorBuffers 関数
この関数は、インジケータの計算に使用されるバッファ数を設定します。
バッファとは、インジケータの計算結果を格納するための一時的な保存領域のことです。
データ型と構成・戻り値
bool IndicatorBuffers(①);
戻り値は、バッファの数が正常に変更された場合は true、それ以外は falseが返されます。
引数 [1]
IndicatorBuffers関数は 1個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | count | int | - | - | 割り当てるバッファの数。最大512個です。 |
バッファは最大512個で、#property indicator_buffers で設定した値未満にすることはできません。カスタムインジケータでカウント用に追加のバッファが必要な場合は、IndicatorBuffers関数を使用してバッファの合計量を指定する必要があります。
※SetIndexBuffer関数を使用する場合は、それ自体に必要なバッファが自動的に確保されるので IndicatorBuffers関数が無くても動作することになります。
しかし、バッファ数を明示的に指定するためには IndicatorBuffers関数を使う方が良いとされています。IndicatorBuffers関数は、SetIndexBuffer関数を呼び出す前にインジケータのバッファ数を設定するためのものであり、これによりプログラムの可読性とメモリ管理が改善されます。また、バッファが必要ない場合にはそのバッファのメモリを解放することができます。
使用例
IndicatorBuffers関数によるバッファ数の設定
IndicatorBuffers関数を使って、バッファの数を設定します。
次のコードはインジケータ用のコードです。インジケータ用コードの作成方法についてはこちらを参考にしてください。
コード
// IndicatorBuffers関数によるバッファ数の設定
#property strict
#property indicator_chart_window // メインウィンドウに表示
#property indicator_buffers 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrYellow
double Buf1[];
int OnInit() {
IndicatorBuffers(1);
SetIndexBuffer(0, Buf1);
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[])
{
for(int i=0; i<rates_total; i++) {
Buf1[i] = High[i];
}
return(rates_total);
}
インジケータ用コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
IndicatorBuffers関数を使うことは良いプログラミング慣習ですが今回の場合、必須ではありません。つまり、IndicatorBuffers関数がコメントアウトされていても、プログラムは正常に動作します。