MetaEditorではカスタムインジケーターに限らず、EAを作成する場合でも、プロジェクトというまとまりで扱います。
![](https://anti-oyajing.online/wp-content/uploads/2022/01/46444918-413F-43FE-89C4-522FA16FAFF4.png)
ほかのプログラミング言語でもそうですが、実際に動くプログラムを作成するにはさまざまなファイルが必要になります。
これらをまとめたものをプロジェクトと呼びます。
新たにカスタムインジケーターを作成するには、MetaEditorでプロジェクトを新しく作成しなければなりません。
ここではカスタムインジケーターのプロジェクトを新しく作成する方法について解説していきます。
カスタムインジケーターのプロジェクト追加ウィザードを起動する
プロジェクトの新規作成するには、MetaEditor上のアイコンをクリックします。(ファイル → 新しいプロジェクト でも可)
![](https://anti-oyajing.online/wp-content/uploads/2022/10/78156b9bd16cef5fc29cbc5c8b87a4d8-1024x469.png)
![](https://anti-oyajing.online/wp-content/uploads/2022/10/78156b9bd16cef5fc29cbc5c8b87a4d8-1024x469.png)
これでプロジェクトの追加ウィザードが起動されます。
カスタムインディケータを選択して次へをクリックすると、カスタムインジケーターのプロジェクト作成ウィザードが開きます。
![](https://anti-oyajing.online/wp-content/uploads/2022/10/7258546d2a612a26c0799a428effe282-1-1024x580.png)
![](https://anti-oyajing.online/wp-content/uploads/2022/10/7258546d2a612a26c0799a428effe282-1-1024x580.png)
![](https://anti-oyajing.online/wp-content/uploads/2021/08/C541D2E5-E764-4393-82A3-193310066B5A.png)
![](https://anti-oyajing.online/wp-content/uploads/2021/08/C541D2E5-E764-4393-82A3-193310066B5A.png)
![](https://anti-oyajing.online/wp-content/uploads/2021/08/C541D2E5-E764-4393-82A3-193310066B5A.png)
INDICATORはカナ表記だと「インディケータ」なのか「インジケータ」なのか「インジケーター」なのか…未だにわかりません。
当サイトでは「インジケーター」に統一したいと思います…。
一般プロパティの指定
カスタムインジケーターのプロジェクト作成ウィザードでは、まずカスタムインジケーターの一般プロパティを指定します。
![](https://anti-oyajing.online/wp-content/uploads/2022/10/e3061ad3aba557a98ff6fceeefbb931d-1024x583.png)
![](https://anti-oyajing.online/wp-content/uploads/2022/10/e3061ad3aba557a98ff6fceeefbb931d-1024x583.png)
ここでは次の項目を設定します。
- 名前
-
作成するプロジェクトの名前を指定します。
プロジェクトを構成する一式のファイルを格納するフォルダも含めて、「/」で区切って指定しましょう。
- 著作権
-
カスタムインジケーターの著作権表記を指定します。
自分で使用するだけの場合は特に気にせずそのままでも良いですし、必要になったら後からプロジェクトのプロパティで変更ができます。
- リンク
-
カスタムインジケーターの著作者のホームページなどのURLを指定します。
著作権同様、そのままでも良いですし、プロジェクトのプロパティで変更ができます。
- パラメータ
-
カスタムインジケーター稼働時にユーザーが設定できるパラメータを追加できます。
後から追加が可能です。
基本的に後から変更が可能なので、詳細な設計ができている場合を除けば、名前だけしっかり指定すればよいでしょう。
イベントハンドラ
カスタムインジケーターを作成するとは、MT5が随時実行する「出来事(イベント)」に対して、その出来事が発生した時どう振る舞うかをプログラムとして記述していくことです。
![](https://anti-oyajing.online/wp-content/uploads/2022/01/46444918-413F-43FE-89C4-522FA16FAFF4.png)
![](https://anti-oyajing.online/wp-content/uploads/2022/01/46444918-413F-43FE-89C4-522FA16FAFF4.png)
![](https://anti-oyajing.online/wp-content/uploads/2022/01/46444918-413F-43FE-89C4-522FA16FAFF4.png)
例えば、新しく時間足がチャート上に描画される出来事のことをイベントと呼びます。
イベントはMT5が起こすもので、カスタムインジケーター側としてはそのイベントを検知するためのイベントハンドラが必要になります。(もっとかんたんに、特定の出来事が発生したときに呼ばれる関数のことと思っても差し支えありません)
![](https://anti-oyajing.online/wp-content/uploads/2022/10/904c13b56ee784cb00b83ed70292ae2e-1024x577.png)
![](https://anti-oyajing.online/wp-content/uploads/2022/10/904c13b56ee784cb00b83ed70292ae2e-1024x577.png)
ここでは、最初からプログラムに実装しておくイベントハンドラを指定します。
- OnCalculate(…,open,high,low,close) または OnCalculate(…,prices)
-
CalculateイベントのイベントハンドラであるOnCalculateは2つの形を持っており、どちらを使用するかを指定します。(ひとつのカスタムインジケーターで2つとも使うことはできません)
- OnTimer
-
Timerイベントが発生した際のイベントハンドラであるOnTimerをプログラム上に最初から記載しておきたい場合はチェックします。
ただし、Timerイベントを生成するには、OnInitとOnDeinitでタイマーの管理を行う必要があります。プロジェクト作成後にタイマー生成、タイマー破棄、OnTimerイベントハンドラを一式書くようにした方がよいと思います。
- OnChartEvent
-
ユーザーがチャートに対する操作を行った際に発生するChartEventイベントのイベントハンドラであるOnChartEventイベントハンドラをプログラムに最初から記載しておきたい場合はチェックします。
こちらも後から変更できるので、悩まずデフォルトのまま次へを押しましょう。
描画プロパティ
指標プロットの描画プロパティを設定します。
![](https://anti-oyajing.online/wp-content/uploads/2022/10/1f168c369969dabb5389425463c53d2e-1024x579.png)
![](https://anti-oyajing.online/wp-content/uploads/2022/10/1f168c369969dabb5389425463c53d2e-1024x579.png)
- サブウィンドウに表示
-
指標プロットをサブウィンドウに表示するか、チャート上に表示するかを指定します。
サブウィンドウに表示するカスタムインジケーターを作成する場合にはチェックを付けます。
- 最小値・最大値
-
サブウィンドウの最小値および最大値を指定します。
サブウィンドウに表示をチェックしている場合のみ指定できます。
- プロット
-
表示する指標プロットを指定します。
追加ボタンをクリックすることで、複数の指標プロットを追加することができます。
こちらもこれまで同様に、後からの設定が可能です。
ここで完了をクリックするとウィザードは終了です。
MetaEditor上に新しいカスタムインジケーターのプロジェクトが表示されます。
ウィザードで間違っても平気
カスタムインジケーターの新規プロジェクトを作成するためのウィザードについて、順番に見てきました。
各画面の説明を見て頂くとわかるとおり、ウィザードで設定したことは基本的に後からプログラム上で設定することが可能です。
このため、ウィザードではプロジェクトのパスや名称を設定しておくに留めておくでいいと思います。
あとはプログラムの方で理解を深めた方が、作成したカスタムインジケーターをさらにカスタマイズしたり改善していく際に捗ります。