2006年03月20日

MT4入門(5) - カスタムインディケータの作り方(3)

MT4入門の第5回目です。

前回ちょっと長くなってしまい、自分で読み直してみても嫌になってしまったので、これからは1回の記事は短めにしようと思います。

今回は

「カスタムインディケータの作り方(3) - インディケータの色と線種を変えよう」

です。

前回インディケータの値を入れておく配列についてお話ししましたが、実は配列を定義して計算結果を代入するだけではインディケータは表示されません。

実際にインディケータを表示させるためには、SetIndexBuffer() という関数で、配列を実際のインディケータに割り当ててやる必要があります。この処理は最初に一度だけやればいいので、init() という初期化関数の中に書くことにします。

SetIndexBuffer(0, Buf0);

この例は、Buf0 という配列を0番目のインディケータに割り当てることを意味します。ここで注意することは、インディケータの番号が1番からではなく、0番目から数えるということです。なので、複数あるときは

SetIndexBuffer(0,Buf0);
SetIndexBuffer(1,Buf1);
SetIndexBuffer(2,Buf2);
 :
 :

のように最初のパラメータを1ずつ増やしていけばよいのです。

インディケータの色と線種もこのinit()関数の中で指定することで変えられます。
そのための関数として SetIndexStyle() を使います。この関数は5つのパラメータがあります。

SetIndexStyle(index, type, style, width, clr)

それぞれのパラメータの意味は

index : インディケータの番号(0,1,2,3,4,5,6,7)
type : インディケータの種類(DRAW_LINE, DRAW_SECTION, DRAW_HISTOGRAM, DRAW_ARROW, DRAW_ZIGZAG, DRAW_NONE)
style : ラインの種類(STYLE_SOLID, STYLE_DASH, STYLE_DOT, STYLE_DASHDOT, STYLE_DASHDOTDOT)
width : ラインの幅(1,2,3,4,5)
clr : ラインの色(Black, Red, Blue など)

です。
インディケータの種類は色々ありますが、ここでは値を直線で結んでいくDRAW_LINEの場合のみ説明します。

ラインの種類は STYLE_SOLIDが実線でその他が点線です。
ラインのサンプルはこんな感じです。DOT が 点で DASH がちょっと長い線になっています。

ラインの幅は文字通りで、幅をドットで表します。

ラインの色の表し方は数値で表す方法もありますが、色定数として予め割り当てられているものを使う方が便利です。
MetaEditor の Navigator ウインドウの Dictionary タブから Standard ccnstants - Web colors を選ぶと一覧が表示されます。

実際のプログラム中には、

SetIndexStyle(0, DRAW_LINE, STYLE_DOT, 1, Red);

のように書きます。
これは、0番目のインディケータに Red の色で1ドット幅点線のラインを引くことを表します。

チャート上ではこんな感じになります。

この行を追加したサンプルプログラムを(Sample2_Ind.mq4) としておきます。色々とパラメータを変えてどうなるか確かめてみてください。

プログラムを変えたときは必ずF5を押してコンパイルしてエラーが出ないことを確認してください。
あと、インディケータの表示はコンパイルしただけでは反映されませんので、タイムフレームを変えるか、MetaTrader を再起動するか、インディケータを一旦削除して再度挿入するかなどしてみてください。

今日はこんなところです。次回はプログラムを変えないでパラメータを変える方法などを説明する予定です。

にほんブログ村 為替ブログへ為替ブログランキング 現在7位
「次の記事も読んでみたい!」
と思った方はクリックにご協力ください。↑

Trackback on "MT4入門(5) - カスタムインディケータの作り方(3)"

このエントリーのトラックバックURL: 

"MT4入門(5) - カスタムインディケータの作り方(3)"へのトラックバックはまだありません。

Comment on "MT4入門(5) - カスタムインディケータの作り方(3)"

"MT4入門(5) - カスタムインディケータの作り方(3)"へのコメントはまだありません。