カスタムインジケーターの作成の流れ
カスタムインジケーターの作成の流れを説明していきます。
メタエディターを起動する
MetaEditor(メタエディタ)をMT4から起動させる方法は以下の通りです。

- ツール→メタエディタ
- フォルダのアイコン
でメタエディタを起動します。
カスタムインジケーターを選択する
次に新規作成を押して、今回はインジケーターを作成するのでカスタムインディケータを選択しましょう。

必要な情報を記入する
必要な情報を記入しましょう。
- インジケーターの名前
- 著作者
- リンク
- パラメーター
パラメーターは必要なときだけ活用します。
今回は名前はSample1などで良いです。

イベントハンドラを選択
イベントハンドラを選択します。もともとOncalate()は入っているので、
- OnTimer()
- ONChartEvent()
は、必要な時にチェックしましょう。

サブウィンドウの設定
サブウィンドウの設定になります。今回は必要ないのでスルーです。そのままfinishを押して終了しましょう。

テンプレートが自動で生成される
以下のようにテンプレートが自動生成されます。

これが1つの雛形になります。
ソースコードはそのまま以下に記載しておきます。
//+------------------------------------------------------------------+
//| sample1.mq4 |
//| Copyright 2020, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+テンプレートから記載していくこと
テンプレートから記載していくことを説明していきます。
まずは、ソースコードの全体像を確認します。

プロパティを記述する
プロパティを記述していきます。

パラメーターを記述する

バッファを記述する
バッファとは、数値を入れておく箱のようなものです。
MQLでインジケーターはバッファで管理されることが多いです。
チャート上に線や矢印などの設定をしたい場合は、バッファの存在をMT4に通知する必要があります。

イベントハンドラ関数内にプログラムを記述する
イベントハンドラ関数内にプログラムを記述していきます。
基本的にカスタムインジケーターで記載する必要があるのは、
- OnInit()
- OnCalculate()
- OnDeInit()
の3つです。

ソースコードを書き終わったら
ソースコードを書き終わったら何をするかを説明します。

ソースコードをコンパイルする
プログラムを記述した後に、コンパイルという作業が必要になります。
プログラムをコンパイルすることにより、
メタトレーダーのインジケーターやEAとして使用することができるようになります。


実際にチャートに表示する
作成したカスタムインジケーターをチャートに表示して実際に使います。
もしバグなどがあればデバッグ作業を行いましょう。

バグもなければこれでカスタムインジケーターの作成が完了です。
メタエディタ(MetaEditor)の様々なテクニック
メタエディタ(MetaEditor)の様々なテクニックをご紹介します。
インデントを効率化するテクニック
インデントを部分的に修正したい時は複数行を選択して
- Tabを押すと右に動く
- Tab+Shiftを押すと左に動く
Tools – Styler を選択すると全てが自動で適切な配置にインデントされ一括整形できます(行の選択は不要)。
関数リファレンスを見るテクニック
調べたい関数の上にカーソルを置いて「F1」を押すと関数リファレンスを見ることができます。
パラメータヒントを見るテクニック
関数の引数入力中に「Ctrl」+「Shift」+「Space」を押すとパラメータのヒントが出るので、
これを参考にすると何を入力すれば良いか分かります。
入力補完を効率化するテクニック
Tools – Options を選択し、Generalタブの List names after に「1」を入力すると、
入力補完の選択肢発生が初期設定の3文字目から1文字目になります。
まとめ
今回はカスタムインジケーターの作成の流れをご紹介しました。
一度理解すればあとはプログラミングする際に同じような手順を進めれば良いです。






コメント