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 を指定すればチャートの時間軸を使ってくれます。