【完全初心者向け】MT4 EA(自動売買)の作り方|30分で動くEAを作ろう
「FXの自動売買をやってみたい...」 「でもEAってプログラミングでしょ?難しそう...」 「何から始めればいいかわからない...」
そんな悩み、めちゃくちゃわかります。
私も最初は「EA=プロのエンジニアが作るもの」だと思ってました。ネットで調べても業者の宣伝ばかりで、「結局どうやって作るの?」という肝心な情報が全然出てこない。
でも実は、EAって思ったより簡単に作れるんです。
この記事では、プログラミング完全未経験のあなたが、30分で実際に動くEAを作れるようになるまでを、一歩一歩丁寧に解説します。
そもそもEAって何?
EA(Expert Advisor)は、MT4で動く自動売買プログラムのことです。
日常生活で例えると...
- 手動トレード = 毎朝自分で目覚ましを止めて起きる
- EA = 目覚ましが鳴ったら自動でコーヒーが淹れられて、カーテンが開く
つまり、「こういう条件になったら買う」「こういう条件になったら売る」というルールを書いておけば、あなたが寝ている間も、仕事している間も、自動で取引してくれるプログラムです。
準備するもの
必要なものはMT4だけです。すでにインストールしてあればOK。
まだの人は、どこのFX業者でもいいのでMT4をダウンロードしてください。デモ口座で大丈夫です。
Step 1: MetaEditorを起動しよう
EAを作るには、MT4に付属しているMetaEditorというプログラミングツールを使います。
起動方法
- MT4を開く
- キーボードで F4キー を押す(または メニュー → ツール → MetaQuotes言語エディタ)
これだけ!MetaEditorが起動します。
![MetaEditorが起動した画面のイメージ]
「うわ、なんか難しそうな画面...」と思うかもしれませんが、大丈夫。必要な部分だけ使えばOKです。
Step 2: 新しいEAファイルを作成
2-1. 新規作成ウィザードを開く
- MetaEditorのメニューから ファイル → 新規作成(または Ctrl+N)
- 「エキスパートアドバイザ(テンプレート)」を選択して「次へ」
2-2. EA情報を入力
- 名前:
MyFirstEA(半角英数字で好きな名前) - 著作者: あなたの名前(空欄でもOK)
- リンク: 空欄でOK
「次へ」→「次へ」→「完了」をクリック。
すると、こんなコードが自動生成されます:
//+------------------------------------------------------------------+//| MyFirstEA.mq4 |//| |//| |//+------------------------------------------------------------------+#property copyright ""#property link ""#property version "1.00"#property strict
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() { return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) { }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { }//+------------------------------------------------------------------+「うわ、もう意味わからん...」って思いました? 大丈夫、一つずつ説明します。
Step 3: コードの意味を理解しよう
このコードには3つの重要な部分があります。
OnInit() - 起動時に1回だけ動く
int OnInit() { // ここに書いたコードは、EAを起動した瞬間に1回だけ実行される return(INIT_SUCCEEDED); }EAをチャートにセットした瞬間に、1回だけ実行されます。 初期設定とか、最初の挨拶とかに使います。
OnDeinit() - 終了時に1回だけ動く
void OnDeinit(const int reason) { // ここに書いたコードは、EAを停止した時に1回だけ実行される }EAを外したり、MT4を閉じたりする時に動きます。 お片付け処理に使います。
OnTick() - 価格が動くたびに動く ⭐重要
void OnTick() { // ここに書いたコードは、価格が変わるたびに実行される // 売買ロジックはここに書く! }これが一番大事! 為替レートが動くたびに(1秒に何回も)実行されます。 「この条件で買う」「この条件で売る」という売買ロジックは、ここに書きます。
Step 4: 最初のEAを書いてみよう
いきなり売買するEAは難しいので、まずは**「動いてる!」と確認できる**シンプルなEAを作りましょう。
4-1. OnInit()にメッセージを追加
OnInit()の中に1行追加します:
int OnInit() { Print("こんにちは!EAが起動しました!"); return(INIT_SUCCEEDED); }4-2. OnTick()に現在価格を表示
OnTick()の中に1行追加します:
void OnTick() { Print("現在の価格: ", Ask); }完成コード
全体はこうなります:
//+------------------------------------------------------------------+//| MyFirstEA.mq4 |//+------------------------------------------------------------------+#property copyright ""#property link ""#property version "1.00"#property strict
int OnInit() { Print("こんにちは!EAが起動しました!"); return(INIT_SUCCEEDED); }
void OnDeinit(const int reason) { Print("EAを終了します。お疲れ様でした!"); }
void OnTick() { Print("現在の価格: ", Ask); }Step 5: コンパイル(変換)しよう
書いたコードを、MT4が理解できる形式に変換します。
- MetaEditorで F7キー を押す(または ツールバーの「コンパイル」ボタン)
- 下のウィンドウに「0 error(s), 0 warning(s)」と表示されればOK!
もしエラーが出たら、コードをもう一度確認してください。スペルミスや、セミコロン(;)の付け忘れがよくある原因です。
Step 6: EAを動かしてみよう!
6-1. MT4に戻る
MetaEditorからMT4に戻ります(Alt+Tabか、タスクバーでMT4をクリック)。
6-2. EAをチャートにセット
- MT4の左側「ナビゲーター」ウィンドウで エキスパートアドバイザ を展開
- MyFirstEA をダブルクリック(またはチャートにドラッグ)
- 設定画面が出たら「OK」をクリック
6-3. 自動売買を有効にする
MT4上部の「自動売買」ボタンをクリックして、緑色(ON)にします。
6-4. 動作確認
MT4下部の「エキスパート」タブをクリックすると...
こんにちは!EAが起動しました!現在の価格: 149.123現在の価格: 149.125現在の価格: 149.124...おめでとう!!🎉 あなたの初めてのEAが動きました!!
Step 7: 少しだけレベルアップ
せっかくなので、もう少しだけ機能を追加してみましょう。
買値と売値の両方を表示
void OnTick() { Print("買値(Ask): ", Ask, " / 売値(Bid): ", Bid, " / スプレッド: ", (Ask - Bid) * 10000, "pips"); }特定の条件でだけメッセージを出す
void OnTick() { // スプレッドが2pips以下の時だけ表示 double spread = (Ask - Bid) * 10000;
if(spread <= 2.0) { Print("スプレッド狭い!今がチャンス! ", spread, "pips"); } }よくあるエラーと対処法
「';' expected」エラー
原因: 行末のセミコロン(;)を忘れている
// ❌ ダメな例Print("Hello")
// ✅ 正しい例Print("Hello");「'OnInit' - function already defined」エラー
原因: OnInit()が2つある。コピペで重複した可能性。
EAがチャートに表示されない
原因: コンパイルしていない、またはエラーがある。F7でコンパイルを再実行。
次のステップ
おめでとうございます!これであなたはEA開発者の第一歩を踏み出しました。
「え、これだけ?売買はしないの?」
そう、今回は売買まではやっていません。でも、EAの基本構造を理解したことが超重要なんです。
次の記事では、実際に移動平均線を使って売買するEAを作ります。今回学んだOnTick()の中に、売買ロジックを書いていきます。
📚 次に読む記事: 移動平均線クロスEAを作ろう
まとめ
- EA = MT4で動く自動売買プログラム
- MetaEditor = EAを書くためのツール(F4で起動)
- OnInit() = 起動時に1回実行
- OnTick() = 価格が動くたびに実行(売買ロジックはここ)
- コンパイル = F7でコードを変換
最初は「Print()で文字を表示する」だけでいいんです。それが動いた時の感動を覚えておいてください。
その小さな一歩が、将来の自動売買システムにつながります。
プログラミングは「動いた!」の積み重ね。焦らず、一歩ずつ進んでいきましょう。応援しています! 🚀
🎁おすすめツール・サービス
※上記リンクにはプロモーション(広告)が含まれています
量子相場謀略|ホソノP
ブログでは書けない本音のトレード戦略とEA開発の裏側を公開。 データに基づいた検証で、再現性のある手法だけをお届けします。