ちょっと賢いボリンジャーバンドインジケータ
50種類以上の通貨ペア、各種CFD(金、株など)対応
前回に引き続き、「簡単インジケータ作成テンプレート」を使ったサンプルを作ってみます。
今回もボリンジャーバンドを利用します。
ボリンジャーバンドにタッチしたら、売ったり買ったりすることが結構あると思います。
でも、本当にタッチしているかどうか分かりにくいですよね。
なので、タッチしているときだけ色を変えるようなインジケータを作ってみます。
まだ、テンプレートをダウンロードしていない人は、「簡単インジケータ作成テンプレート」からダウンロードしてください。
indicator_temp.mq4をコピーして、適当な名前にしてください。
例として、BB_I.mq4とします。
このファイルは、
インストールパス\MetaTrader\experts\indicators
に入れてくださいね。
いつものようにメタトレーダーを起動して、メタエディターを開いてください。
そこで、先ほど作ったBB_I.mq4を開きます。
変更する場所は、一番下の関数
DataSetだけです。
以下のように修正してみてください。
void DataSet(int i)
{
double dBBUp = iBands(NULL,0,Param1,2,0,PRICE_CLOSE,MODE_UPPER,i);
double dBBDown = iBands(NULL,0,Param1,2,0,PRICE_CLOSE,MODE_LOWER,i);
if(dBBUp < High[i])
{
ExtMapBuffer1[i]=dBBUp;
}
else
{
ExtMapBuffer2[i]=dBBUp;
}
if(dBBDown > Low[i])
{
ExtMapBuffer3[i]=dBBDown;
}
else
{
ExtMapBuffer4[i]=dBBDown;
}
// ExtMapBuffer5[i]=iMA(NULL,0,14,0,MODE_SMA,PRICE_WEIGHTED,i);
// ExtMapBuffer6[i]=iMA(NULL,0,14,0,MODE_EMA,PRICE_WEIGHTED,i);
// ExtMapBuffer7[i]=iMA(NULL,0,14,0,MODE_SMMA,PRICE_WEIGHTED,i);
// ExtMapBuffer8[i]=iMA(NULL,0,14,0,MODE_LWMA,PRICE_WEIGHTED,i);
}
今回は、上下2色使うので、上側にExtMapBuffer1、ExtMapBuffer2
下側に、ExtMapBuffer3、ExtMapBuffer4を割り当てます。
ボリンジャーバンドの上側のラインより高値が高い場合に、ExtMapBuffer1に値をセット。
低い場合に、ExtMapBuffer2にセットします。
下側も同様にセットしています。
ボリンジャーバンドで利用する足の数を変えられるように、Param1を使いました。
コンパイルして、描画させたいグラフにドロップしてみてください。
Param1は0になっているので、21とか適当な値にしてください。
線の太さや色もパラメータで設定できますので、いじってみてくださいね。
表示させた結果、ちゃんと色が変わっているのが分かりましたか?
でも、なんか線が飛んでいませんか?
データを入れていないところは、デフォルトでEMPTY_VALUEという描画しない値が、入っています。
ちょうど、書き始めに値が入っていないため抜けているんですね。
というわけで、ちょっと気持ち悪いので、たりない情報を別のバッファからもらうように修正してみます。
void DataSet(int i)
{
double dBBUp = iBands(NULL,0,Param1,2,0,PRICE_CLOSE,MODE_UPPER,i);
double dBBDown = iBands(NULL,0,Param1,2,0,PRICE_CLOSE,MODE_LOWER,i);
if(dBBUp < High[i])
{
ExtMapBuffer1[i]=dBBUp;
if(ExtMapBuffer1[i+1] == EMPTY_VALUE)ExtMapBuffer1[i+1] = ExtMapBuffer2[i+1];
}
else
{
ExtMapBuffer2[i]=dBBUp;
if(ExtMapBuffer2[i+1] == EMPTY_VALUE)ExtMapBuffer2[i+1] = ExtMapBuffer1[i+1];
}
if(dBBDown > Low[i])
{
ExtMapBuffer3[i]=dBBDown;
if(ExtMapBuffer3[i+1] == EMPTY_VALUE)ExtMapBuffer3[i+1] = ExtMapBuffer4[i+1];
}
else
{
ExtMapBuffer4[i]=dBBDown;
if(ExtMapBuffer4[i+1] == EMPTY_VALUE)ExtMapBuffer4[i+1] = ExtMapBuffer3[i+1];
}
// ExtMapBuffer5[i]=iMA(NULL,0,14,0,MODE_SMA,PRICE_WEIGHTED,i);
// ExtMapBuffer6[i]=iMA(NULL,0,14,0,MODE_EMA,PRICE_WEIGHTED,i);
// ExtMapBuffer7[i]=iMA(NULL,0,14,0,MODE_SMMA,PRICE_WEIGHTED,i);
// ExtMapBuffer8[i]=iMA(NULL,0,14,0,MODE_LWMA,PRICE_WEIGHTED,i);
}
これで、試してみてください。
うまくいったでしょ。
ちなみにコンパイルするとパラメータの設定が初期化されてしまいます。
気になる人は、上の方の
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_color3 Green
#property indicator_color4 Yellow
extern int Param1=0;
の値を変えてみてくださいね。
タグ
2009年05月20日 コメント&トラックバック(2) | トラックバックURL |
カテゴリ: MQL4 インジケータ メタトレーダー入門 簡単インジケータ作成テンプレート
50種類以上の通貨ペア、各種CFD(金、株など)対応
トラックバック&コメント
トラックバック
-
[...] 前回のちょっと賢いボリンジャーバンドインジケータをちょっと派手にしたいと思います。 [...]
ピングバック投稿者: インジケータを派手にする | メタトレーダープログラミング めたぷろ — 2009年05月21日
コメント
コメントを投稿する


![[image]投資で失敗しない7つの法則:無料CDプレゼント](http://www.affiliatecenter.jp/invest/img/FX_freeCD/banner165x100seven_rule5e.gif)
![[image]無料レポートプレゼント:ドルが紙くずになった時に資産を守る方法](http://www.affiliatecenter.jp/invest/img/dollar/MNL4_165x100.jpg)



MyBlog

[...] 前回のちょっと賢いボリンジャーバンドインジケータをちょっと派手にしたいと思います。 [...]
はじめまして
ちょっと賢いボリンジャーバンドインジケータは、大変重宝しています。あと、この機能がシグマ3ラインにもあったらいいのになぁ~と思っているのですが、どうしたらできますか?教えてください。どうぞよろしくお願いいたします。