ソースコード完成例
各処理の説明
■プロパティの設定
①#property indicator_chart_window
②#property indicator_buffers 5
③#property indicator_color1 Green
④#property indicator_color2 Green
⑤#property indicator_color3 Green
⑥#property indicator_color4 Blue
⑦#property indicator_color5 Red
⑧#property indicator_style1 STYLE_SOLID
⑨#property indicator_style2 STYLE_SOLID
⑩#property indicator_style3 STYLE_SOLID
⑪#property indicator_style4 STYLE_SOLID
⑫#property indicator_style5 STYLE_SOLID
⑬#property indicator_width1 2
⑭#property indicator_width2 2
⑮#property indicator_width3 2
⑯#property indicator_width4 2
⑰#property indicator_width5 2
①#property indicator_chart_window
インジゲータをチャートウインドウに表示する。
②#property indicator_buffers 5
インジゲータのバッファを格納する。
③#property indicator_color1 Green
1つ目のインジゲータ(ボリンジャーバンドの上バンド)の色を指定する。今回は緑(Green)。
④#property indicator_color2 Green
2つ目のインジゲータ(ボリンジャーバンドの中央バンド)の色を指定する。今回は緑(Green)。
⑤#property indicator_color3 Green
3つ目のインジゲータ(ボリンジャーバンドの下バンド)の色を指定する。今回は緑(Green)。
⑥#property indicator_color4 Blue
2つ目のインジゲータ(上矢印)の色を指定する。今回は青(Blue)。
⑦#property indicator_color5 Red
3つ目のインジゲータ(下矢印)の色を指定する。今回は赤(Red)。
⑧#property indicator_style1 STYLE_SOLID
1つ目のインジゲータ(ボリンジャーバンドの上バンド)の線種を指定する。
⑨#property indicator_style2 STYLE_SOLID
2つ目のインジゲータ(ボリンジャーバンドの中央バンド)の線種を指定する。
⑩#property indicator_style3 STYLE_SOLID
3つ目のインジゲータ(ボリンジャーバンドの下バンド)の線種を指定する。
⑪#property indicator_style4 STYLE_SOLID
4つ目のインジゲータ(上矢印)の線種を指定する。
⑫#property indicator_style5 STYLE_SOLID
5つ目のインジゲータ(下矢印)の線種を指定する。
⑬#property indicator_width1 2
1つ目のインジゲータ(ボリンジャーバンドの上バンド)の線の幅を指定する。
⑭#property indicator_width2 2
2つ目のインジゲータ(ボリンジャーバンドの中央バンド)の線の幅を指定する。
⑮#property indicator_width3 2
3つ目のインジゲータ(ボリンジャーバンドの下バンド)の線の幅を指定する。
⑯#property indicator_width4 2
4つ目のインジゲータ(上矢印)の線の幅を指定する。
⑰#property indicator_width5 2
5つ目のインジゲータ(下矢印)の線の幅を指定する。
■変数の設定
①double BufUP[];
②double BufCenter[];
③double BufDOWN[];
④double BufUP_Arrow[];
⑤double BufDOWN_Arrow[];
①double BufUP[];
double型の変数を指定。ここでは、BufUPという配列を指定(ボリンジャーバンドの上バンド用)。
②double BufCenter[];
double型の変数を指定。ここでは、BufCenterという配列を指定(ボリンジャーバンドの中央バンド用)。
③double BufDOWN[];
double型の変数を指定。ここでは、BufDOWNという配列を指定(ボリンジャーバンドの下バンド用)。
④double BufUP_Arrow[];
double型の変数を指定。ここでは、BufUP_Arrowという配列を指定(上矢印用)。
⑤double BufDOWN_Arrow[];
double型の変数を指定。ここでは、BufDOWN_Arrowという配列を指定(上矢印用)。
■外部パラメーターの設定
①extern int BB_Period = 20;
①extern int BB_Period = 20;
int型の変数を指定。ここでは、BB_Periodという変数を指定(ボリンジャーバンドの中間線の値を計算する期間)。
■初期化関数の設定
int init()
{
①SetIndexBuffer(0, BufUP);
②SetIndexBuffer(1, BufCenter);
③SetIndexBuffer(2, BufDOWN);
④SetIndexBuffer(3, BufUP_Arrow);
⑤SetIndexBuffer(4, BufDOWN_Arrow);
⑥SetIndexStyle(3,DRAW_ARROW,STYLE_SOLID,2,Blue);
⑦SetIndexArrow(3,233);
⑧SetIndexStyle(4,DRAW_ARROW,STYLE_SOLID,2,Red);
⑨SetIndexArrow(4,234);
return(0);
}
①SetIndexBuffer(0,BufUP);
インジケーターバッファーをインジケーターバッファー領域に割り当てる。
ここでは、0番目のインデックスを指定し、BufUPという配列を指定。
②SetIndexBuffer(1,BufCenter);
1番目のインデックスを指定し、BufCenterという配列を指定。
③SetIndexBuffer(2,BufDOWN);
2番目のインデックスを指定し、BufDOWNという配列を指定。
④SetIndexBuffer(3,BufUP_Arrow);
3番目のインデックスを指定し、BufUP_Arrowという配列を指定。
⑤SetIndexBuffer(4,BufDOWN_Arrow);
4番目のインデックスを指定し、BufDOWN_Arrowという配列を指定。
⑥SetIndexStyle(3,DRAW_ARROW,STYLE_SOLID,2,Blue);
描画スタイルを指定する。ここでは、3番目のインデックスに指定したBufUP_Arrowの設定を指定する。
⑦SetIndexArrow(3,233);
記号を表示させる。ここでは、3番目のインデックスに指定したBufUP_Arrowの設定を指定する。
⑧SetIndexStyle(4,DRAW_ARROW,STYLE_SOLID,2,Blue);
描画スタイルを指定する。ここでは、4番目のインデックスに指定したBufDOWN_Arrowの設定を指定する。
⑧SetIndexArrow(4,234);
記号を表示させる。ここでは、4番目のインデックスに指定したBufDOWN_Arrowの設定を指定する。
■指標計算関数の設定
int start()
{
①int counted_bar = IndicatorCounted();
②int limit = Bars-counted_bar;
③if(counted_bar == 0) limit -= BB_Period-1;
④for (int i = limit-1; i>=0; i--)
{
⑤BufUP[i] = iBands(NULL,0,BB_Period,3,0,PRICE_CLOSE,1,i);
⑥BufCenter[i] = iBands(NULL,0,BB_Period,3,0,PRICE_CLOSE,0,i);
⑦BufDOWN[i] = iBands(NULL,0,BB_Period,3,0,PRICE_CLOSE,2,i);
}
⑧if(counted_bar == 0) limit -= 2;
⑨for (i = limit-1; i>=0; i--)
{
⑩if(BufUP[i] < High[i])
{
⑪BufDOWN_Arrow[i] = EMPTY_VALUE;
⑫BufDOWN_Arrow[i] = High[i]+30*Point;
}
⑬if(BufDOWN[i] > Low[i])
{
⑭BufUP_Arrow[i] = EMPTY_VALUE;
⑮BufUP_Arrow[i] = Low[i]-30*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文。
⑤BufUP[i] = iBands(NULL,0,BB_Period,3,0,PRICE_CLOSE,1,i);
配列BufUPにiBandsの値を代入。ここでは、上バンドの値を取得。
⑥BufCenter[i] = iBands(NULL,0,BB_Period,3,0,PRICE_CLOSE,0,i);
配列BufCenterにiBandsの値を代入。ここでは、中央バンドの値を取得。
⑦BufDOWN[i] = iBands(NULL,0,BB_Period,3,0,PRICE_CLOSE,2,i);
配列BufDOWNにiBandsの値を代入。ここでは、下バンドの値を取得。
⑧if(counted_bar == 0) limit -= 2;
if文。
⑨for (i = limit-1; i>=0; i--)
for文。
⑩if(BufUP[i] < High[i])
if文。ここでは、上バンドの値が高値より小さかったらという意味。
⑪BufDOWN_Arrow[i] = EMPTY_VALUE;
BufDOWN_Arrow[i]を空にする。
⑫BufDOWN_Arrow[i] = High[i]+30*Point;
高値の30ポイント上に下矢印を表示する。
⑬if(BufDOWN[i] > Low[i])
if文。ここでは、下バンドの値が安値より大きかったらという意味。
⑪BufUP_Arrow[i] = EMPTY_VALUE;
BufUP_Arrow[i]を空にする。
⑫BufUP_Arrow[i] = Low[i]+30*Point;
安値の30ポイント下に上矢印を表示する。