今回は、実際にカスタムインジケーターを1から作る方法をご紹介したいと思います。
まず、MetaEditorを起動します。起動したら、メニューの「File」-「New」を選択するか、Ctrl+N でExpert Advisor Wizardを起動します。
今回はカスタムインジケーターを作るので、”Custom Indicator”を選択して「次へ」をクリックします。
次の画面ではカスタムインジケーターの基本情報を入力します。
以下を参考にして入力して下さい。
項目 | 説明 |
---|---|
Name | カスタムインジケーターの名前を入力します。 |
Author | 作者の名前を入力します。 |
Link | 作者のホームページ等があれば入力します。 |
Parameters | パラメータを入力します。(今回は使用しません) |
入力が完了したら「次へ」をクリックします。
今回は何も設定せず、”Indicator in separate window”にチェックが入っていないことを確認して「完了」ボタンをクリックします。
念のため、以下に簡単に解説しておきます。
項目 | 説明 |
---|---|
Indicator in separate window | カスタムインジケーターをサブウィンドウに描画する場合にチェックします。 |
Minimum | サブウィンドウに描画する場合の最小値を指定します。 |
Maximum | サブウィンドウに描画する場合の最大値を指定します。 |
Indexes | 描画の種類と色を指定します。いくつでも指定可能です。 |
これでカスタムインジケーターを作る場合の最もシンプルなソースが自動生成されました。
ちなみに、カスタムインジケーターのソースファイルは”MT4のインストールフォルダ\experts\indicators\インジケーター名.mq4″に作成されます。
MT4 Build 610以降の場合は、MT4メニューの[ファイル]-[データフォルダを開く]でデータフォルダが開きますから、その中のMQL4フォルダの中にあるIndicatorsフォルダ以下に”インジケーター名.mq4″ が作成されます。
以下がその内容です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
//+------------------------------------------------------------------+ //| TestIndicator.mq4 | //| Copyright 2018, MTPlace. | //| https://mtplace.biz/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MTPlace." #property link "https://mtplace.biz/" #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); } //+------------------------------------------------------------------+ |
プログラミングの経験がない方は、突然これを見ても意味不明だと思いますので簡単にご説明しておきます。
まず、これだけは覚えて下さい。「//」(スラッシュが2つ以上連続したもの)以降、行末まではコメントになります。
コメントは、プログラム的には全く意味はなく、削除しても動作には影響しません。
ただ、自分が後で見て何をやろうとしているのかが分かるように、コメントを残しておくことは非常に重要です。
では、重要な点だけ解説しておきましょう。上のコードの24行目以降を抜き出しました。
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
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); } |
プログラムは小さな機能の集まりです。その機能の中でも「関数」という機能があります。
関数は以下の様な形で表現されます。
1 2 3 4 5 6 |
戻り値の型 関数の名前() { // ここに処理を書きます。 return(戻り値); } |
関数は、別の関数から呼び出されて使用される、プログラムの部品のようなものです。
24行目から39行目の OnCalculate 関数は、MetaTrader 4のチャートがティックデータを受け取った時に自動的に実行される関数です。
よって、OnCalculate 関数の処理を作ることがカスタムインジケーターを作ることだといっても過言ではありません。
突然「戻り値」という言葉が出てきたので困惑した方もいらっしゃると思います。
戻り値というのは、その関数が使用された時に最終的に使用元に返す値のことです。
と言っても今は理解する必要はありませんのでご心配なく。
今は関数はこんな形式で表現するんだな、くらいの理解で大丈夫です。
ではこのカスタムインジケーターをチャートにセットしてみましょう。ただ、その前にコンパイルしておく必要があります。
MetaEditor上でF5キー(Build 610以降の場合F7キー)を押すか、メニューの「File」-「Compile」でコンパイルが可能です。
コンパイルが完了すると、MetaEditorの下のほうにコンパイル結果が表示されます。
そこに、”0 error(s), 0 warning(s)”と表示されていれば正常にコンパイルが完了しています。
これで作成したカスタムインジケーターを MetaTrader 4で使用することが可能になりました。
MetaEditor上でF4キーを押すか、メニューの「Tool」-「Trading Terminal」でMetaTrader 4を起動します。
MetaTrader 4のメニューの「ファイル」-「新規チャート」より、お好きな通貨ペアのチャートを開きます。
ナビゲーターの”Custom Indicators”の中にある”TestIndicator”をダブルクリックすると、インジケーターの設定ウィンドウが開くので、そのまま「OK」ボタンをクリックします。
※ナビゲーターが開いていない場合は、Ctrl+Nを押すか、メニューの「表示」-「ナビゲーター」で開けます。
これでインジケーターのセットは完了です。ただ、今回作成したカスタムインジケーターは、何もしないインジケーターですので、何も表示されません(^_^;)
次回は実際に簡単な処理を実装していきたいと思います。