ソースコード完成例
各処理の説明
■プロパティの設定
①#property indicator_chart_window
②#property indicator_buffers 2;
①#property indicator_chart_window
インジゲータをチャートウインドウに表示する。
②#property indicator_buffers 2
インジゲータのバッファを格納する。
■変数の設定
①double BufUP_Arrow[];
②double BufDOWN_Arrow[];
①double BufUP_Arrow[];
double型の変数を指定。ここでは、BufUP_Arrowという配列を指定。
②double BufDOWN_[];
double型の変数を指定。ここでは、BufDOWN_Arrowという配列を指定。
■初期化関数の設定
int OnInit()
{
①SetIndexBuffer(0,BufUP_Arrow);
②SetIndexStyle(0,DRAW_ARROW,EMPTY,1,Red);
③SetIndexArrow(0,233);
④SetIndexBuffer(1,BufDOWN_Arrow);
⑤SetIndexStyle(1,DRAW_ARROW,EMPTY,1,Blue);
⑥SetIndexArrow(1,234);
return(INIT_SUCCEEDED);
}
①SetIndexBuffer(0,BufUP_Arrow);
インジケーターバッファーをインジケーターバッファー領域に割り当てる。
ここでは、0番目のインデックスを指定し、BufUP_Arrowという配列を指定。
②SetIndexStyle(0,DRAW_ARROW,EMPTY,1,Red);
描画スタイルを指定する。ここでは、0番目のインデックスに指定したBufUP_Arrowの設定を指定する。
③SetIndexArrow(0,233);
記号を表示させる。ここでは、0番目のインデックスに指定したBufUP_Arrowの設定を指定する。
④SetIndexBuffer(1,BufDOWN_Arrow);
インジケーターバッファーをインジケーターバッファー領域に割り当てる。
ここでは、0番目のインデックスを指定し、BufDOWN_Arrowという配列を指定。
⑤SetIndexStyle(1,DRAW_ARROW,EMPTY,1,Red);
描画スタイルを指定する。ここでは、1番目のインデックスに指定したBufDOWN_Arrowの設定を指定する。
⑥SetIndexArrow(1,233);
記号を表示させる。ここでは、1番目のインデックスに指定したBufDOWN_Arrowの設定を指定する。
■指標計算関数の設定
int start()
{
①int limit = Bars - IndicatorCounted();
②for(int i=0; i < limit; i++)
{
③BufUP_Arrow[i] = EMPTY_VALUE;
④BufDOWN_Arrow[i] = EMPTY_VALUE;
⑤if(Close[i] > Open[i])
{
⑥BufUP_Arrow[i] = Low[i];
}
⑦if(Close[i] < Open[i])
{
⑧BufDOWN_Arrow[i] = High[i];
}
}
return(0);
}
①int limit = Bars-IndicatorCounted();
int型の変数limitにBars-IndicatorCounted()を代入。
Barsは、
表示されているバーの本数を格納しているint型の変数。
IndicatorCounted()は、インジケーターの確定値が計算されたバー(現在のバー以外)の本数を取得する関数。
②for(int i=0; i < limit; i++)
for文。
③BufUP_Arrow[i] = EMPTY_VALUE;
BufUP_Arrowの値を空にする。
④BufDOWN_Arrow[i] = EMPTY_VALUE;
BufDOWN_Arrowの値を空にする。
⑤if(Close[i] > Open[i])
if文。終値が始値より大きかったら(陽線)という条件文。
⑥BufUP_Arrow[i] = Low[i];
安値に上矢印を表示する。
⑦if(Close[i] < Open[i])
if文。終値が始値より小さかったら(陰線)という条件文。
⑧BufDOWN_Arrow[i] = High[i];
高値に下矢印を表示する。