ソースコード完成例
各処理の説明
■プロパティの設定
①#property indicator_chart_window
②#property indicator_buffers 3
③#property indicator_color2 Blue
④#property indicator_style2 STYLE_SOLID
⑤#property indicator_width2 2
⑥#property indicator_color3 Red
⑦#property indicator_style3 STYLE_SOLID
⑧#property indicator_width3 2
①#property indicator_chart_window
インジゲータをチャートウインドウに表示する。
②#property indicator_buffers 3
インジゲータのバッファを格納する。
③#property indicator_color2 Blue
2つ目のインジゲータ(上矢印)の色を指定する。今回は青(Blue)。
④#property indicator_style2 STYLE_SOLID
2つ目のインジゲータ(上矢印)の線種を指定する。
⑤#property indicator_width2 2
2つ目のインジゲータ(上矢印)の線の幅を指定する。
⑥#property indicator_color3 Red
3つ目のインジゲータ(下矢印)の色を指定する。今回は赤(Red)。
⑦#property indicator_style3 STYLE_SOLID
3つ目のインジゲータ(下矢印)の線種を指定する。
⑧#property indicator_width3 2
3つ目のインジゲータ(下矢印)の線の幅を指定する。
■変数の設定
①double BufSTC_MAIN[];
②double BufUP[];
③double BufDOWN[];
①double BufSTC_MAIN[];
double型の変数を指定。ここでは、BufSTC_MAINという配列を指定(ストキャスティクスのメイン用)。
④double BufUP[];
double型の変数を指定。ここでは、BufUPという配列を指定(上矢印用)。
⑤double BufDOWN[];
double型の変数を指定。ここでは、BufDOWNという配列を指定(下矢印用)。
■外部パラメーターの設定
①extern int UP_LINE = 80;
②extern int DOWN_LINE = 20;
①extern int UP_LINE = 80;
int型の変数を指定。ここでは、UP_LINEという変数を指定(ストキャスティクスの上抜け基準値)。
②extern int DOWN_LINE = 20;
int型の変数を指定。ここでは、DOWN_LINEという変数を指定(ストキャスティクスの下抜け基準値)。
■初期化関数の設定
int init()
{
①SetIndexBuffer(0, BufSTC_MAIN);
②SetIndexBuffer(1, BufUP);
③SetIndexBuffer(2, BufDOWN);
④SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,EMPTY_VALUE);
⑤SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,2,Blue);
⑥SetIndexArrow(1,233);
⑦SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,2,Red);
⑧SetIndexArrow(2,234);
return(0);
}
①SetIndexBuffer(0,BufSTC_MAIN);
インジケーターバッファーをインジケーターバッファー領域に割り当てる。
ここでは、0番目のインデックスを指定し、BufSTC_MAINという配列を指定。
②SetIndexBuffer(1,BufUP);
1番目のインデックスを指定し、BufUPという配列を指定。
③SetIndexBuffer(2,BufDOWN);
2番目のインデックスを指定し、BufDOWNという配列を指定。
④SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,EMPTY_VALUE);
描画スタイルを指定する。ここでは、0番目のインデックスに指定したBufSTC_MAINの設定を指定する。
⑤SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,2,Blue);
描画スタイルを指定する。ここでは、1番目のインデックスに指定したBufUPの設定を指定する。
⑥SetIndexArrow(1,233);
記号を表示させる。ここでは、1番目のインデックスに指定したBufUPの設定を指定する。
⑦SetIndexStyle(2,DRAW_ARROW,STYLE_SOLID,2,Red);
描画スタイルを指定する。ここでは、2番目のインデックスに指定したBufDOWNの設定を指定する。
⑧SetIndexArrow(2,234);
記号を表示させる。ここでは、2番目のインデックスに指定したBufDOWNの設定を指定する。
■指標計算関数の設定
int start()
{
①int counted_bar = IndicatorCounted();
②int limit = Bars-counted_bar;
③if(counted_bar == 0) limit -= 1;
④for (int i = limit-1; i>=0; i--)
{
⑤BufSTC_MAIN[i] = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,i);
}
⑥if(counted_bar == 0) limit -= 2;
⑦for (i = limit-1; i>=0; i--)
{
⑧BufUP[i] = EMPTY_VALUE;
⑨if(BufSTC_MAIN[i+1] < UP_LINE && BufSTC_MAIN[i] >= UP_LINE)
{
⑩BufUP[i] = Low[i]-20*Point;
}
⑪BufDOWN[i] = EMPTY_VALUE;
⑫if(BufSTC_MAIN[i+1] > DOWN_LINE && BufSTC_MAIN[i] <= DOWN_LINE)
{
⑬BufDOWN[i] = High[i]+20*Point;
}
}
return(0);
}
①int counted_bar = IndicatorCounted();
int型の変数counted_barにバー(確定値が計算されたバー(現在のバー以外))の本数を代入。
②int limit = Bars-IndicatorCounted();
int型の変数limitにBars-IndicatorCounted()を代入。
Barsは、
表示されているバーの本数を格納しているint型の変数。
IndicatorCounted()は、インジケーターの確定値が計算されたバー(現在のバー以外)の本数を取得する関数。
③if(counted_bar == 0) limit -= BB_Period-1;
if文。
④for (int i = limit-1; i>=0; i--)
for文。
⑤BufSTC_MAIN[i] = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,i);
配列BufSTC_MAINにiStochasticの値を代入。ここでは、メイン値を取得。
⑥if(counted_bar == 0) limit -= 2;
if文。
⑦for (i = limit-1; i>=0; i--)
for文。
⑧BufUP[i] = EMPTY_VALUE;
BufUPの値を空にする。
⑨if(BufSTC_MAIN[i+1] < UP_LINE && BufSTC_MAIN[i] >= UP_LINE)
ストキャスティクスの条件文。2本前のメイン値がUP_LINE以下で、1本前のメイン値がUP_LINE以上のとき。
⑩BufUP[i] = Low[i]-20*Point;
安値の20ポイント下に上矢印を表示する。
⑪BufDOWN[i] = EMPTY_VALUE;
BufDOWNの値を空にする。
⑫if(BufSTC_MAIN[i+1] > DOWN_LINE && BufSTC_MAIN[i] <= DOWN_LINE)
ストキャスティクスの条件文。2本前のメイン値がDOWN_LINE以上で、1本前のメイン値がDOWN_LINE以下のとき。
⑬BufDOWN[i] = High[i]+20*Point;
高値の20ポイント上に下矢印を表示する。