SetIndexShift 関数
この関数は、インジケータラインのオフセットを設定します。
ここで言うオフセットとは、基準位置から相対位置へ移動させることを言います。
たとえば、SetIndexShift関数では、引数②にプラスの数字を入れると右側へ、マイナスの数字を入れるとインジケータラインがそのまま平行移動 (シフト) します。
データ型と構成・戻り値
void SetIndexShift(①, ②);
戻り値は無し。
引数 [2]
SetIndexShift関数は 2個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | Index | int | - | - | インジケータラインのインデックス。0~7で設定。 |
② | shift | int | - | - | バー単位のシフト値。プラスの時は右に、マイナスの時は左へバーの数だけ移動します。 |
使用例
SetIndexShift関数によるインジケータラインの移動
SetIndexShift関数を使って、インジケータラインを右側へバーで3本分移動させます。移動前は赤色のライン、移動後は黄色のラインです。
次のコードはインジケータ用のコードです。インジケータ用コードの作成方法についてはこちらを参考にしてください。
コード
// SetIndexShift関数によるインジケータラインの移動
#property strict
#property indicator_chart_window // チャートウィンドウに表示
#property indicator_buffers 2 // インジケータバッファの数
#property indicator_color1 clrRed // ①線の色(インジケータライン)
#property indicator_width1 2 // ①線の太さ
#property indicator_style1 STYLE_SOLID // ①線の種類
#property indicator_type1 DRAW_LINE // ①線のタイプ
#property indicator_color2 clrYellow // ②線の色(インジケータライン)
#property indicator_width2 2 // ②線の太さ
#property indicator_style2 STYLE_SOLID // ②線の種類
#property indicator_type2 DRAW_LINE // ②線のタイプ
double Buf1[], Buf2[]; // インジケータバッファの配列
int OnInit() {
SetIndexBuffer(0, Buf1); // 1次元動的配列をインジケータバッファへ関連付け
SetIndexBuffer(1, Buf2);
SetIndexShift(1, 3);
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]=iMA(Symbol(), 0, 1, 0, MODE_SMA, PRICE_LOW, i); // 1期間安値移動平均
Buf2[i]=iMA(Symbol(), 0, 1, 0, MODE_SMA, PRICE_LOW, i); // 1期間安値移動平均
}
return(rates_total);
}
インジケータ用コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
![](https://naruhodo-mt4.com/wp-content/uploads/2023/05/P803setindexshift.png)