SetIndexDrawBegin 関数
この関数は、指定したインジケータラインの開始位置を設定します。
インジケータラインの開始位置とは、チャートで表示されるバーを左側から数えた位置になります。各時間軸のバーの数はヒストリカルデータで取得されている数になります。
全バー数は、Bars関数 または iBars関数で取得できます。インジケータなどで OnCalculate関数を使用している場合は、rates_total定数でも取得することができます。
データ型と構成・戻り値
void SetIndexDrawBegin(①, ②);
戻り値は無し。
引数 [2]
SetIndexDrawBegin関数は 2個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | Index | int | - | - | インジケータラインのインデックス。0~7で設定。 |
② | shift | int | - | - | インジケータラインを描画するバーの開始位置の番号。一番左側にあるバーが 1番目です。 |
使用例
SetIndexDrawBegin関数を使ったインジケータラインの描画
SetIndexDrawBegin関数を使って、インジケータラインを直近のバーから10期間分の描画をします。
次のコードはインジケータ用のコードです。インジケータ用コードの作成方法についてはこちらを参考にしてください。
コード
//SetIndexDrawBegin関数を使ったインジケータラインの描画
#property strict
#property indicator_chart_window // チャートウィンドウに表示
#property indicator_buffers 1 // インジケータバッファの数
#property indicator_color1 clrYellow // 線の色(インジケータライン)
#property indicator_width1 2 // 線の太さ
#property indicator_style1 STYLE_SOLID // 線の種類
#property indicator_type1 DRAW_LINE // 線のタイプ
double Buf[]; // インジケータバッファの配列
int OnInit() {
SetIndexBuffer(0, Buf); // 1次元動的配列をインジケータバッファへ関連付け
Print("全バー数:", iBars(NULL, 0));
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++) {
Buf[i]=iMA(Symbol(), 0, 1, 0, MODE_SMA, PRICE_LOW, i); // 1期間安値移動平均
}
SetIndexDrawBegin(0, rates_total - 10);
return(rates_total);
}
インジケータ用コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)