6,604 views
この記事は最終更新から 2553日 が経過しています。
(1) やりたいこと
チャートに Indicatorを表示させる練習。その第1歩としてチャートに線を描きたい。
参考サイトはこちら(↓)
MQL5: 自分のインディケーターの作成
(2) 仕様
できるだけ小さなプログラムにするため、仕様を単純にする。
チャート上で各足の高値を線で結ぶ。
(3) プログラムのひな形を作成
まずは Wizardを使って Indicatorプログラムのひな形を作成する。
1) MetaEditorを起動する。
2) [New]メニューを選択する。
3) Custom Indicatorを選択する。
4) 名前を付ける。今回はパラメーターは無し。
5) OnCalcurateでは全値を通知させる。OnTimer, OnChartEventは使わない。
6) 今回はチャート上にIndicatorを乗せるので Indicator in separate windowは OFFのまま。Plotsには黄色い線を1本追加する。
7) [完了]ボタンを押すと、こんなプログラムソースコードが自動生成された。
(4) プログラムを書く
上で作成したひな型に独自のコードを書き加えて、前述の仕様を満たすようにする。
今回は仕様が単純なため、自動生成されたコードにたったの3行を追加するだけだった。
具体的には OnCalcurateの中に以下の3行を追加した。
通知された全足の高値データを Indicator用バッファに設定している。
これだけで、#property で指定した通りのIndicatorが表示される仕組みだ。とっても便利。
for(int i = 0 ; i < rates_total ; i++){ HighBuffer[i] = high[i]; }
そして出来上がったプログラムがこちら。
コメント込みで全52行、しかも49行は自動生成されたものだ。
(5) 作った Indicatorをチャートに乗せてみる
[F5]キーを押下、もしくは [Start]ボタンを押下すると、デバッグできる。
チャートにIndicatorが乗った!
何の役にも立たないが、そのうちに意味のあるものが作れるようになるはず。きっと...
(6) 線の装飾を変えてみる
黄色線は上記(3)の Wizard上で選択したもの。
これらの情報は、自動生成されたコード上で、
#property indicator_xxxxxxxx
として出力されていた。
ということは...
これを変更すれば線の装飾を自由に変更できるわけだ。
ではどんな種類があるのか?
以下を参考にいろいろと弄ってみる。
1) 指標プロパティ
2) #property
3) 指標スタイル
装飾#1:線の太さを3倍にしてみる。
#property indicator_width1 3
装飾#2:途切れ線にしてみる。
#property indicator_style1 STYLE_DASH
装飾#3:矢印にしてみる。
#property indicator_type1 DRAW_ARROW
矢印かと思ったら●が表示された。
これは PLOT_ARROW=159(丸)がデフォルトだからとのこと。
これを変えたい場合は PLOT_ARROWの値を関数コールで変える必要がある。
たとえば右向き矢印の文字コードを設定してみる。
PlotIndexSetInteger(0, PLOT_ARROW, 240);
これは何かに使えるかもしれない。
ちなみに上向き矢印は 241, 下向き矢印は 242だ。
装飾#4:線と矢印を少し離す。
線と矢印が重なってしまっているので、少し離したい。
これは PLOT_ARROW_SHIFT の値で調節できる。
PlotIndexSetInteger(0, PLOT_ARROW_SHIFT, -30);
30pixel上にずれた。
値を -30から 30に変えれば、矢印は下方向に 30pixelずれる。
基準位置はプログラム中で HighBuffer に格納した値で判断しているようだ。
今回は高値を設定しているため、高値が基準位置になっている。
ここからのシフト量を指定していることになる。
HighBufferに open, close, lowなど別の値を設定すれば、それぞれが基準位置となる。
ちょっと疲れた...