本記事は広告(アフィリエイトリンク)を含みます。投資は自己責任であり、本記事は投資助言ではありません。掲載するコードは学習用のサンプルであり、そのまま実運用での利益を保証するものではありません。
MT4/MT5でEAを自作してみたい方に向けて、当サイトではできるだけ手順を追ってEAの作り方を紹介していきます。基本的にはMQL5公式の情報を一次情報として参照しながら進めます。
ここで扱うのは「初期設定編」として、開発環境の準備からテンプレート作成・コンパイル・初期ソースコードの確認までです。EAを始める前に確認しておきたい前提(言語の選び方や検証の考え方)は、EAプログラミングを始める前に確認したいことを先に読んでおくと流れがつかみやすくなります。
なお、MQL4はMT4用の開発言語で現在は積極的な更新がされていません。開発元はMT5への移行を進めています。利用するFX業者の対応状況によって学ぶ言語が変わるため、最新の対応は公式情報で確認してください。
EA自作の全体の流れ
EAを自作するときは、おおまかに次の流れで進みます。
- アイデア・ロジックを設計する(どの指標・時間足で、いつ買い・売り・決済するか)
- MetaEditorでコーディングする
- コンパイルして実行ファイルを作る
- バックテスト(過去検証)を行う
- フォワード・デモ運用で実際の値動きを確認する
- 結果をもとにロジックや設定を見直す
- (必要なら)出品・配布を検討する
この記事では1〜3と、初期ソースコードの確認までを扱います。
EA処理のフローチャート
EAは基本的に、価格が動くたびに「トレードチャンスがあるか」をチェックして動きます。
- まずマーケットがオープンしているかを確認する
- オープンしていれば、トレードチャンスかどうかを判定する。チャンスならトレードへ、なければ最初に戻る
- トレードはエントリーとエグジットがあり、エグジットするまで完了しない
- エントリー後は未完了なので、再びスタートから処理を行う
- 最終的にエグジットまで進んで完了する

コードを書くときは、今プログラムがこの流れのどこを処理しているかを意識すると整理しやすくなります。
1. MetaEditorを起動する
MT4(またはMT5)を起動し、「ツール」>「メタエディター(MetaEditor)」からMQLを編集するためのエディタを起動します。

2. 新規EAのテンプレートを作成する
MetaEditorが起動したら、EA用のテンプレートを新規作成します。「新規作成」からMQLウィザードを立ち上げ、作成するものとして「エキスパートアドバイザ(テンプレート)」を選択します。

一般プロパティでは、EAの名前とパラメータを設定します。ここでは例として、ストップロス用のパラメータ StopLoss をint型で追加し、初期値を30としておきます。

イベントハンドラの選択は、必要なければそのまま進めて問題ありません。チェックを入れると、対応する関数が初期テンプレートに追加されます。
3. コンパイルして動作を確認する
まずは、ほぼ空のソースコードをコンパイル(実行ファイルを作成する作業)してみましょう。メニューの「コンパイル」をクリックします。

下のツールボックスに「0 error」と表示されれば、コンパイルが成功し実行ファイルが作成されています。生成されるファイルは次の2つです。
- sample.ex4:実行ファイル(実際にMT4で動かすファイル。コンパイルすると生成される)
- sample.mq4:ソースコードファイル(エディタで編集しているのはこちら)
MT4に戻り、「ナビゲーター」のエキスパートアドバイザを右クリックして更新すると、作成したEAが表示されます。チャートにドラッグ&ドロップすると設定画面が開き、先ほど追加した StopLoss がパラメータとして表示されます。

ここで注意したいのは、チャートにEAが乗った=売買ロジックが動く、ではないという点です。この時点のEAは中身がほぼ空で、まだ何もトレードしません。
4. 初期ソースコードの中身(OnTick)
初期ファイルには、OnInit(起動時)・OnTick(ティックごと)・OnDeinit(終了時)といった関数が用意されています。メインの売買処理は基本的に OnTick の中に書いていきます。OnTick は価格が動く(ティックが来る)たびに呼び出されるため、ここで「チャンスかどうか」を判定する形になります。
次回以降は、この初期ソースコードに少しずつロジックを追加していきます。なお、解説で示すコードはあくまで学習用のサンプルです。そのまま実運用に使うことは想定しておらず、利益を保証するものでもありません。
ロジック設計で気をつけたいこと
コードが書けるようになったら、次はロジックの設計です。最低限、次の要素を整理しておくと組み立てやすくなります。
- エントリー条件:どの指標・条件で建てるか
- エグジット条件:利確・損切り・時間決済など
- フィルタ:エントリーを絞る条件(時間帯・ボラティリティなど)
- ロット・リスク管理:1トレードあたりのリスク、ストップロス・テイクプロフィット
このとき、過去データに合わせ込みすぎる過最適化(カーブフィッティング)に注意が必要です。バックテストの数字を良く見せるための調整は、フォワードで崩れる原因になります。設計段階の前提整理はEAプログラミングを始める前に確認したいことも参考にしてください。
検証を忘れない(バックテスト→フォワード)
EAは作っただけでは完成ではありません。コンパイルが通ったら、必ず検証に進みます。
- バックテスト:過去データでの挙動を確認する。ただし過去の結果であり、将来を保証しない
- フォワード(デモ運用):現在進行の相場で動かし、実際の値動きでの挙動を確認する
バックテストとフォワードの成績が乖離することは珍しくありません。詳しくはバックテストとフォワードの違い、検証ログの読み方はQuantAnalyzerの使い方で解説しています。いきなり大きな資金で運用せず、デモや少額から確認することをおすすめします。
不具合対応とVPS運用
実際に動かすと、約定エラーやスリッページ、想定外の値動き、ロジックのバグに直面します。これらに気づいて修正できる準備も、開発の一部です。
また、EAを長時間止めずに動かすにはVPSの利用を検討する人が多いです。Windows Updateや再起動でEAが止まるリスクなどの確認ポイントはMT4/MT5向けVPS運用の確認ポイントにまとめています。
作ったEAを出品したくなったら
自作EAを販売・配布したい場合は、検証の実績・使い方の説明・購入後のサポート体制などが必要になります。出品の流れや手数料、注意点はEA・インジケーターの出品方法で確認できます。出品を視野に入れているなら、開発の早い段階からEAプログラミングを始める前に確認したいことを踏まえておくとスムーズです。
まとめ
EA自作の初期設定は、環境準備 → テンプレート作成 → コンパイル → 初期ソースの確認、という流れで進みます。ここまでは「動く土台を作る」段階で、本番はこの後のロジック設計と検証です。焦らず、バックテストとフォワードで確認しながら進めていきましょう。
よくある質問(FAQ)
Q. プログラミング未経験でもEAは作れますか?
基本文法から学べば、簡単なEAを作ること自体は可能です。ただし相場で通用するかは別問題なので、検証を重ねる前提で取り組んでください。
Q. MQL4とMQL5、どちらで作るべきですか?
利用するFX業者やプラットフォームの対応状況によって変わります。公式情報で最新の対応を確認したうえで選んでください。
Q. コンパイルが通れば実運用してよいですか?
コンパイルが通ることと、ロジックが機能することは別です。バックテストとデモ運用(フォワード)で挙動を確認してから判断してください。
Q. 作ったEAは販売できますか?
GogoJungleなどで出品は可能ですが、検証実績やサポート体制が必要です。出品方法の記事を確認してください。

