MQLを触る②
カスタムインジケータを作る
MQL を使って、チャート上にお絵かきをしてみます。
つくり方
メタエディターを起動し、メニューの
を選択し、ダイアログからカスタムインジケータを選択します。次に、適当に名前をつけて完了します。書く場所
int OnInit()がインジケータが作成されたタイミングで呼び出される関数、
int OnCalculate(...)がチャートが更新されるたびに呼び出される関数です。
線を書く
いくつかのマクロを定義すると、作れます。
indicator_buffers および indicator_plots に、描画したい先の数を設定し、indicator_labeln に先の種類や色を設定します。n はインデックス番号のようです。先の種類などは、MT4 のダイアログからも設定できるようになります。
また、設定用の配列をグローバルに確保しておく必要があります。
OnInit での処理
SetIndexBuffer で、配列とインディケータのバッファを関連付けます。第一引数の数字は、たぶんバッファのインデックスです。
OnCalculate での処理
OnCalculate で SMABuffer に数字を設定することで、線になるようです。以下は、SMA を描くサンプルです。
インデックスは、0 番目が最新、1 番目が一つ前…となっています。for 文は、rates_total の数だけ回しておけば良さそうです(もうちょっとちゃんと仕様を調べないと)。
iMA 関数は、平均移動曲線を計算してくれる関数です。
最後の shift が、何番目の値を取得するかの指定です。iMA では、ma_method に指定する値によって、単純移動平均線のほか指数移動平均線の計算もやってくれます。
そのほか、symbol に NULL を指定すればチャートの通貨ペアを、timeframe に 0 を指定すればチャートの時間軸を使ってくれます。