『新メタトレ入門本』EA:新規ファイルの作成・基本プログラム(if文)
『新MT4対応 FXメタトレーダープログラミング入門』(新メタトレ入門本)連動企画です。
今回から、本書の第4章「エキスパートアドバイザー(EA)のプログラミング」に入ります。
まずは、「4-1 新規ファイルの作成」と「4-2 EAの基本プログラム」を取り上げますが、EAのプログラミングはMT4とMT5とで異なる点が多いので、記事を分けて説明します。
今回の記事では、基本的な文法であるif文までを扱います。
【目次】
第1章 メタトレーダーの紹介
第2章 スクリプトのプログラミング
第3章 カスタム指標のプログラミング
第4章 エキスパートアドバイザー(EA)のプログラミング
4-1 新規ファイルの作成
4-2 EAの基本プログラム
4-3 ストラテジーテスターによるEAの動作確認
4-4 EAのサンプルプログラム
4-5 EAのデバッグ
4-6 ストラテジーテスターによるEAの最適化
4-7 EAの自動売買のためのプログラミング
本書アップデート情報
このセクションでは、本書内容のアップデートはありません。
関連するMT5情報
新規ファイルの作成
MT5のメタエディターの「新規作成」メニューでは、EAとして2種類の選択項目があります。
「テンプレート」「自動生成」のどちらかを選択することになりますが、本書は、EAのプログラムをゼロから作成する「テンプレート」の方を対象としています。
「自動生成」の方はMT4にはないMT5特有の機能ですが、プログラミングの考え方が違ってくるので、ここでの説明は省略します。
「テンプレート」として作成されるプログラムは、スクリプトやカスタム指標と同じく「#property strict」がないだけで、基本的にMT4で作成されるプログラムと同じです。
EAの基本プログラム
EAの売買ロジックで必須となる条件分岐については、MQL4とMQL5とで違いはありません。
条件式で「&&」と「||」の評価の順番が旧MQL4と新MQL4とで異なりますが、MQL5は新MQL4と同じで、「&&」が「||」より先という仕様になっています。
したがって
if(条件1 || 条件2 && 条件3)
という条件式の場合、「条件2 && 条件3」を先に評価することになるはずです。ただし、コンパイル時に
「check operator precedence for possible error; use parentheses to clarify precedence」
という警告が出ることがあります。そのままでも問題と思いますが、警告が気になるようでしたら
if(条件1 || (条件2 && 条件3))
のように先に評価させたい部分を「(」「)」で囲んでおくとよいでしょう。