配列の関連付け SetIndexBuffer 関数

関数

カスタムインジケータ関数

SetIndexBuffer 関数

この関数は、指定したインジケータバッファへ double型の 1次元動的配列を関連付けます。

ここで言う 1次元動的配列は、プログラム中で宣言される「double Buf[];」のことです。

データ型と構成・戻り値

bool SetIndexBuffer(①, ②);

戻り値は、関連付けが成功した場合 true、それ以外は falseを返します。

引数 [2]

SetIndexBuffer関数は 2個の引数で構成されます。


引数名データ型単位初期値説明
indexintインジケータバッファの数。番号付けは 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);
}

インジケータを実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

 

タイトルとURLをコピーしました