PC編 エキスパートアドバイザ(EA)を作成する方法
この記事は:
に公開されています
に更新されています
MetaTrader4(MT4)/MetaTrader5(MT5)では、メタエディタ―と呼ばれるプログラミングツールを使って、エキスパートアドバイザ(EA)を作成します。MT4/MT5のエキスパートアドバイザ(EA)は、それぞれMQL4/MQL5という専用のプログラミング言語で記述されます。
ここでは、MT4/MT5でエキスパートアドバイザ(EA)を作成する方法について説明します。
MT4/MT5それぞれの説明は、タブ切替でご確認いただけます。
手順1
メニューバーの「ツール」をクリックし、「メタエディター」を選択します。
手順2
メタエディターが起動します。メニューバーの「新規作成」ボタンをクリックします。
手順3
「エキスパートアドバイザ (テンプレート)」を選択し、「次へ」ボタンをクリックします。
手順4
作成するエキスパートアドバイザ(EA)の名称・著作者・表示させるリンク、また必要に応じてパラメータを設定し、「次へ」ボタンをクリックします。名前以外の項目は空にしても問題ありません。
また、これ以降に入力・設定する内容は、後からコード上で追加・変更・削除を行うことが可能です。
番号 |
項目名 |
説明 |
---|---|---|
1 |
名前 |
作成するエキスパートアドバイザ(EA)の名称を指定します。 |
2 |
著作者 |
作成するエキスパートアドバイザ(EA)の著作者を記載します。 |
3 |
リンク |
表示させるリンクを入力します。 |
登録した名称・著作者・リンクの情報は、エキスパートアドバイザ(EA)の設定画面に表示されます。
手順5
使用するイベントハンドラ(特定のタイミングで自動的に実行される関数)を設定します。
番号 |
項目名 |
説明 |
---|---|---|
1 |
OnTrade |
OnTradeは、取引が実行された時に注文・約定・ポジション・取引履歴の変更を処理するための関数です。 |
2 |
OnTradeTransaction |
OnTradeTransactionは、TradeTransactionに区分されるイベントが発生する時にエキスパートアドバイザ(EA)で呼び出され、取引リクエストの実行結果を処理するための関数です。 |
3 |
OnTimer |
OnTimerは、指定した時間ごとに動作する関数です。間隔となる時間は後から、コード上で指定・変更できます。 |
4 |
OnChartEvent |
OnChartEventは、チャートでのイベントを処理する関数です。チャート上でオブジェクトの作成・削除・移動・編集など、イベントが発生する際に実行されます。 |
5 |
OnBookEvent |
OnBookEventは、板情報が変更されたときにその変化を処理するための関数です。 |
手順6
使用するテスターイベントハンドラを設定します。
番号 |
項目名 |
説明 |
---|---|---|
1 |
OnTester |
OnTesterは、ストラテジーテスターで最適化結果を算出する計算式に使用する関数です。 |
2 |
OnTesterInit |
OnTesterInitは、ストラテジーテスターで最適化を行う際のエキスパートアドバイザ(EA)の初期化を実行する関数です。 |
3 |
OnTesterPass |
OnTesterPassは、ストラテジーテスターによる最適化中のデータ処理を実行する関数です。 |
4 |
OnTesterDeinit |
OnTesterDeinitは、ストラテジーテスターによる最適化終了後のデータ処理を実行する関数です。 |
手順7
MQL4言語でプログラムを記述します。
MT4向けに使われるMQL4と、MT5向けに使われるMQL5は、似ている部分も多いですが互換性は無く、MT5のエキスパートアドバイザ(EA)をMT4で利用することはできません。
MQL4はC言語に似た構造を持つのに対し、MQL5はC++に似た構文で作成され、処理の柔軟性やバリエーションが広がっています。
手順8
プログラムを記述し終えたら、ツールバーの「コンパイル」ボタンをクリックします。
プログラムの構文が間違っている、特定のファイルが見つからないなど、コンパイル時に問題があると以下のようにエラーが発生します。
MQL4によるプログラムで間違えやすいのは、「セミコロン」の付け忘れや「全角スペースの使用」です。発生したエラーには、ほとんどの場合その理由が書かれているので、よく確認してプログラムを修正してください。
手順9
コンパイルが完了すると、「ナビゲータ」欄に作成したエキスパートアドバイザ(EA)が反映されます。
手順10
メタエディターを閉じてMT4に戻り、「ナビゲータ」に作成したエキスパートアドバイザ(EA)が反映されていることを確認します。
手順1
メニューバーの「ツール」をクリックし、「MetaQuotes 言語エディタ」を選択します。
手順2
メタエディターが起動します。メニューバーの「新規作成」ボタンをクリックします。
手順3
「エキスパートアドバイザ (テンプレート)」または「エキスパートアドバイザ (自動生成)」を選択し、「次へ」ボタンをクリックします。
「エキスパートアドバイザ(テンプレート)」を選択した場合、デフォルトのプログラムにはパラメータや関数など、以降の手順で設定した項目だけが記述されます。「エキスパートアドバイザ(自動生成)」を選択した場合は上記の項目に加え、MT5で標準搭載されているインディケータなどのソースを追加できます。
手順4
作成するインディケータの名称・著作者・表示させるリンク、また必要に応じてパラメータを設定し、「次へ」ボタンをクリックします。名前以外の項目は空にしても問題ありません。
また、これ以降に入力・設定する内容は、後からコード上で追加・変更・削除を行うことが可能です。
番号 |
項目名 |
説明 |
---|---|---|
1 |
名前 |
作成するエキスパートアドバイザ(EA)の名称を指定します。 |
2 |
著作者 |
作成するエキスパートアドバイザ(EA)の著作者を記載します。 |
3 |
リンク |
表示させるリンクを入力します。 |
登録した名称・著作者・リンクの情報は、エキスパートアドバイザ(EA)の設定画面に表示されます。
手順5
使用するイベントハンドラ(特定のタイミングで自動的に実行される関数)を設定します。
番号 |
項目名 |
説明 |
---|---|---|
1 |
OnTrade |
OnTradeは、取引が実行された時に注文・約定・ポジション・取引履歴の変更を処理するための関数です。 |
2 |
OnTradeTransaction |
OnTradeTransactionは、TradeTransactionに区分されるイベントが発生する時にエキスパートアドバイザ(EA)で呼び出され、取引リクエストの実行結果を処理するための関数です。 |
3 |
OnTimer |
OnTimerは、指定した時間ごとに動作する関数です。間隔となる時間は後から、コード上で指定・変更できます。 |
4 |
OnChartEvent |
OnChartEventは、チャートでのイベントを処理する関数です。チャート上でオブジェクトの作成・削除・移動・編集など、イベントが発生する際に実行されます。 |
5 |
OnBookEvent |
OnBookEventは、板情報が変更されたときにその変化を処理するための関数です。 |
手順6
使用するテスターイベントハンドラを設定します。
番号 |
項目名 |
説明 |
---|---|---|
1 |
OnTester |
OnTesterは、ストラテジーテスターで最適化結果を算出する計算式に使用する関数です。 |
2 |
OnTesterlnit |
OnTesterInitは、ストラテジーテスターで最適化を行う際のエキスパートアドバイザ(EA)の初期化を実行する関数です。 |
3 |
OnTesterPass |
OnTesterPassは、ストラテジーテスターによる最適化中のデータ処理を実行する関数です。 |
4 |
OnTesterDeinit |
OnTesterDeinitは、ストラテジーテスターによる最適化終了後のデータ処理を実行する関数です。 |
手順7
MQL5言語でプログラムを記述します。
MT4向けに使われるMQL4と、MT5向けに使われるMQL5は、似ている部分も多いですが互換性は無く、MT4のエキスパートアドバイザ(EA)をMT5で利用することはできません。
MQL4はC言語に似た構造を持つのに対し、MQL5はC++に似た構文で作成され、処理の柔軟性やバリエーションが広がっています。
手順8
プログラムを記述し終えたら、ツールバーの「コンパイル」ボタンをクリックします。
プログラムの構文が間違っている、特定のファイルが見つからないなど、コンパイル時に問題があると以下のようにエラーが発生します。
MQL5によるプログラムで間違えやすいのは、「セミコロン」の付け忘れや「全角スペースの使用」です。発生したエラーには、ほとんどの場合その理由が書かれているので、よく確認してプログラムを修正してください。
手順9
コンパイルが完了すると、「ナビゲータ」欄に作成したエキスパートアドバイザ(EA)が反映されます。
手順10
メタエディターを閉じてMT5に戻り、「ナビゲータ」に作成したエキスパートアドバイザ(EA)が反映されていることを確認します。
この記事はお役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
貴重な意見をいただきありがとうございます。