スポンサーサイト





上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

ポリンジャーバンドの描画





ポリンジャーバンドを算出する関数 iBands() を勉強したところで、ポリンジャーバンドを描くプログラムを作成します。


20110209_5


移動平均線を描画するプログラムを作成したときはSampleMAというファイルを作成しましたが、サンプルファイルが増えすぎるのもうっとうしいかと思いますので、初めてインジケータを作成するときに作成したSampleIndicatorファイルに上書きして今回のプログラムを作成することにします。


まず、プログラムのヘッダ部分を考えます。#property、extern変数、値を格納する配列 の部分です。

標準的なポリンジャーバンドは、基準線・上位線・下位線の3本ですから、配列は3つ必要です。extern変数としては、期間と偏差を設定できたほうがいいでしょう。

では、移動平均線を描画するプログラムを作成したときと同じく、ツールバーのNewボタン→Custom Indicator と進みます。

Nameは、SampleIndicatorファイルを上書きするので「SampleIndicator」。Parametersは、後で設定を変えられる外部変数なので、期間として「BB_Period」という名前にして初期値を20とし、偏差として「BB_Deviation」という名前にして初期値を2とします。初期値は別の数字でもかまいません。

20110209_1


英語でファイルを上書きしていいか聞いてきますので、OKとしてください。

20110209_6



次はラインの指定です。3本描くので3つ指定しなければなりません。

20110209_3


スケルトン完成です。

20110209_4


できあがったスケルトンを少々手直しします。

配列名ですが、ExtMapBuffer1、ExtMapBuffer2、ExtMapBuffer3 とどれが基準線でどれが上位線・下位線を示すのか分かりにくいので、MainLine、UpperLine、LowerLine と書き換えます。

すなわち、ヘッダー部分

double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];

double MainLine[];
double UpperLine[];
double LowerLine[];

と書き換えます。

また、init()関数内も

SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,ExtMapBuffer3);

SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,MainLine);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,UpperLine);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,LowerLine);

と書き換えます。

これで、0番目の配列(MainLine)が基準線、1番目の配列(UpperLine)が上位線、2番目の配列(LowerLine)が下位線と名前の上では明確になりました。


最後にstart()関数ですが、SampleMAファイルをコピー&ペーストして手直しすると手早くできます。

int start()
{
int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

int limit=Bars-counted_bars;
for(int i=0; i<limit; i++) {
MainLine[i]=iBands(NULL,0,BB_Period,BB_Deviation,0,PRICE_CLOSE,MODE_MAIN,i);
UpperLine[i]=iBands(NULL,0,BB_Period,BB_Deviation,0,PRICE_CLOSE,MODE_UPPER,i);
LowerLine[i]=iBands(NULL,0,BB_Period,BB_Deviation,0,PRICE_CLOSE,MODE_LOWER,i);
}

return(0);
}


上のコードは、移動平均線を描画したときと比べて、for文の中身をiBands()関数に合うように入れ替えただけです。

コンパイル・実行してポリンジャーバンドがうまく表示されることを確認してください。

20110209_5


このように、インジケータを一つ覚えておくと、ちょっとした変更をするだけで新しいインジケータを描けるようになります。

スポンサーサイト

タグ :

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://metatradermania.blog24.fc2.com/tb.php/36-d50b89bd
Listed below are links to weblogs that reference
from ど素人のMetaTrader入門
Bookmark
検索フォーム
RSSリンクの表示
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。