ソースコード完成例
各処理の説明
■プロパティの設定
①#property indicator_chart_window
②#property indicator_buffers 2
③#property indicator_color2 LimeGreen
④#property indicator_style2 STYLE_SOLID
⑤#property indicator_width2 3
①#property indicator_chart_window
インジゲータをチャートウインドウに表示する。
②#property indicator_buffers 2
インジゲータのバッファを格納する。
③#property indicator_color2 LimeGreen
インジゲータの色を指定する。今回はキミドリ(LimeGreen)を使用。
④#property indicator_style2 STYLE_SOLID
インジゲータのラインの種類を指定する。今回は実線を使用。
⑤#property indicator_width2 3
インジゲータのラインの太さ(幅)を指定する。今回は3を使用。
■変数の設定
①double BufSAR[];
②double BufDOT[];
①double BufSAR[];
double型の変数を指定。ここでは、BufSARという配列を指定。
②double BufDOT[];
double型の変数を指定。ここでは、BufDOTという配列を指定。
■初期化関数の設定
int init()
{
①SetIndexBuffer(0, BufSAR);
②SetIndexBuffer(1, BufDOT);
③SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,2,LimeGreen);
④SetIndexArrow(1,159);
return(0);
}
①SetIndexBuffer(0,BufSAR);
インジケーターバッファーをインジケーターバッファー領域に割り当てる。
ここでは、0番目のインデックスを指定し、BufSARという配列を指定。
②SetIndexBuffer(0,BufDOT);
インジケーターバッファーをインジケーターバッファー領域に割り当てる。
ここでは、1番目のインデックスを指定し、BufDOTという配列を指定。
③SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,2,LimeGreen);
描画スタイルを指定する。ここでは、1番目のインデックスに指定したBufDOTの設定を指定する。
④SetIndexArrow(1,159);
記号を表示させる。ここでは、1番目のインデックスに指定したBufDOTの設定を指定する。
■指標計算関数の設定
int start()
{
① int limit = Bars - IndicatorCounted();
②for (int i = 0; i < limit; i++)
{
③BufSAR[i] = iSAR(NULL,0,0.2,0.02,i);
④BufDOT[i] = EMPTY_VALUE;
⑤if(BufSAR[i+1] <= Close[i+1])
⑥BufDOT[i] = BufSAR[i];
⑦if(BufSAR[i+1] >= Close[i+1])
⑧BufDOT[i] = BufSAR[i];
}
return(0);
}
①int limit = Bars-IndicatorCounted();
int型の変数limitにBars-IndicatorCounted()を代入。
Barsは、
表示されているバーの本数を格納しているint型の変数。
IndicatorCounted()は、インジケーターの確定値が計算されたバー(現在のバー以外)の本数を取得する関数。
②for(int i=0; i<limit; i++){ }
for文。
③BufSAR[i] = iSAR(NULL,0,0.2,0.02,i);
配列BufSARにiSARの値を代入。
ここでは、現在のチャートの通貨ペア、時間足、、ステップ0.02、最大値0.2、現在の足を指定。
④BufDOT[i] = EMPTY_VALUE;
BufDOTの値を空にする。
⑤if(BufSAR[i+1] <= Close[i+1])
if文。BufSAR[i+1}の値がClose[i+1}より小さければという条件文。
⑥BufDOT[i] = BufSAR[i];
BufSAR[i]の位置にBufDOT[i](ドット)を表示する。
⑦if(BufSAR[i+1] >= Close[i+1])
if文。
BufSAR[i+1}の値がClose[i+1}より大きければという条件文。
⑧BufDOT[i] = BufSAR[i];
BufSAR[i]の位置にBufDOT[i](ドット)を表示する。