【FX自動売買】EA入門 MetaTraderとMetaEditor【MT4】
この記事は【EAの教科書シリーズ】の一部です。全記事は以下から確認できます。
MetaTrader4とは
MetaTrader4(MT4)とはFX取引を行うための無料で利用できるプラットフォームのことです。
取引を行うだけでなく、様々なチャートを表示させたり、自動売買プログラムを実行させたり、自分の売買戦略をテストしたりすることもできます。
基本的には他のFXプラットフォームでできることはMT4で全てできると言っても過言でないくらい万能です。

MetaEditorとは
MT4が人気である理由の一つにチャート上に表示できるインジケータや自動売買プログラムを自分で作ることができるということがあります。
これらはコードで作成しますが、そのためのツールがMetaEditorになります。MetaEditorで書いたコードをMetaTraderで実行するという感じです。
MetaEditorの開き方
MetaEditorを開くには写真(下)の黄色いメモ帳のようなアイコンをクリックします。またはF4で開くこともできます。

以下がMetaEditorの基本画面になります。

多少初期設定によって表示が異なる場合がありますが、気にしないでください。
また初めて開く際には以下のようなウィンドウが表示されるかもしれません。

これはこれから何を作成するのかを確認しているものであり、自動売買プログラムを作りたい場合は一番上のエキスパートアドバイザを選択します。選んだものによって必要なテンプレートコードがあらかじめ用意されるようになっています。
自動売買プログラム EA(エキスパートアドバイザ)を作成する
上のウィンドウが表示されていない場合は画面上部にある新規作成ボタンをクリックしてください。
ファイル→新規作成でも可能です。

すると先程説明したウィンドウが表示されます。今回はEAを作成していくので、一番上のエキスパートアドバイザ(テンプレート)にチェックを入れ、「次へ」をクリックしてください。

すると上のような画面が表示されます。
- 名前:Experts\のあとに作成するEAの名前を自由につけます。
- 著作者:EAの作者の名前を書きます。基本的には自身のお名前を書いてください。
- リンク:もしWebサイトなどをお持ちの方はこちらにリンクを書いてください。

今回はプログラムの名前をtestとします。基本的にここで書いたことがプログラムに影響することはないので、適当でも構いませんが、日本語で記述すると予期せぬエラーの原因になる可能性がありますので、英語で記述することをおすすめします。
入力が完了したら「次へ」をクリックしてください。すると以下の画像のように表示されます。

ここから先は基本的に何もチェックせずにデフォルトの状態のまま「次へ」を押していただいて大丈夫です。

最後に完了をクリックして設定を終えてください。

設定が終わると上のようなテンプレートコードが表示されます。
次のステップでコードの中身を確認していきましょう。
コードの意味を確認する

①には先程のステップで入力した「著作者」と「リンク」の情報が記載されています。「名前」はこのスクリプトのファイル名になっています(test.mq4)。このスクリプト(プログラム)の作者に関する情報が記載されている場所だと考えてください。
②プログラムはいくつかの関数から構成されており、このスクリプトをリアル口座かストラテジーテスター(EAの実行結果を確認するためのツール)で実行した際に全ての関数が実行されます。
関数は自分で作成したりもしますが、全てのスクリプトは最初から3つの関数が事前に用意されています。そして基本的にこれら3つの関数のみが他の関数を呼び出すために使われます。つまり、自分で作成した関数はこれから説明する3つの関数のいずれかの中で呼び出して使うということです。
そしてそれら三つの中で一番最初に呼び出されるのが②のint OnInit()という関数になります。この関数はスクリプトを起動したタイミングで実行されます。スクリプトの起動はチャート上にこのEAを設置した際や、ストラテジーテスターでEAのテストを開始するタイミングと同じです。
int OnInit()はスクリプトの起動時に一回だけ呼び出されるものです。自動売買の初期化を行うための関数だと考えてください。
③Void OnDeinit()は作成したプログラムをチャートから外して動作を終了させたときや、ストラテジーテスターでのテストを停止した際、つまりプログラムを終了させる際に呼び出される関数です。
④もとから設定されている3つの関数の最後はvoid OnTick()です。この関数が自動売買実行中にずっと実行されるメインの関数になります。
名前の通り、ティック(チャートが動く最小単位)毎に実行されます。言い換えると、市場で誰かしらによって取引が行われるたびにこの関数が呼び出されます。1ティックは1トレードと考えることができます。
⑤コードは行ごとに数字が記載されているので、エラーなどを確認する際に便利です。コーディングする際にはコードは上から順に実行されていくということを意識することが大切です。
コンパイルボタン

画像(上)のコンパイルボタンをクリックするとスクリプトの中身が実行され、エラーをチェックしてくれます。
エラーがある場合はそこでスクリプトが停止し、エラー箇所を知らせてくれます。コンパイルボタンを押しても実際にEAが起動して取引が開始されるわけではないので、安心してください。コードを書き足したら、エラーがないかこまめにコンパイルボタンを押してチェックすることが大切です。
試しに最初の状態のままコンパイルボタンを押してみてください。

エラーがある場合は画面下部のツールボックスのエラータブ内にエラーが表示されます。今回はエラーが何もないので0 errorsと表示されているのが確認できます。
また143 msecなどのように表示されている部分がありますが、これはスクリプトの実行にかかった時間を表示しています。この場合は143ミリ秒かかったという意味です。
もし高頻度でトレードを行わせるようなプログラムを作成する場合、効率的なコードを書いてスクリプトの実行時間を減らす努力も重要になってきます。
まとめ
いかがでしたか。今回はMT4でEAを作成するための超基本であるMetaTraderとMetaEditorについて、初期コードの仕組みについて解説しました。
今後実際にプログラムを書いていく上で今回の基礎的な知識が重要になってきますので、あらかじめざっくりでもいいので理解しておくことが大切です。
[itemlink post_id=”2236″]