本ページはプロモーションが含まれています

ホーム › EAプログラミング

EAプログラミング

MT4(MQL4)EAソースコード公開サイト11選と動かし方

↻

トム

トム

現役エンジニア(本業はJavaバックエンド)。以前はMT4のEAを自作してFX自動売買をしていました(現在は引退)。今はポイ活を「時給」で検証・攻略しています。

MQL4でEA開発を始めると、「どんなコードを書けばよいのか」「参考になるサンプルが見つからない」と感じる場面が多いはずです。

実は、MQL4のEAソースコードはMT4本体に付属するサンプル、日本語の学習サイト、海外のコード共有サイトの3系統から無料で手に入ります。

この記事では、2026年9月時点で公開が続いている11の入手先をレベル・言語・費用で比較し、MT4で動かす手順までまとめました。

なお、MT4サービスの終了を発表するFX会社が増えています。MT5(MQL5)向けのソースコード探しは、別記事「MQL5のEAソースコード入手先7選(MT5サンプルと自動生成)」にまとめています。

こんな方におすすめ

  • ネットで検索しても、良質なEAのサンプルコードが見つからず困っている
  • サンプルコードを読んでも、どこから手を付ければいいかわからない
  • コードを書くのは難しいが、ノーコードツールでEAを作ってみたい
  • 見つけたコードを実際にMT4で動かす手順まで知りたい

MQL4とは、MT4でEA・インジケーター・スクリプトを作るためのプログラミング言語です。ソースファイルの拡張子は.mq4で、MetaEditorでコンパイルすると実行ファイルの.ex4になります。

紹介サイト早見表

本文で紹介する11の入手先を、対象レベル・言語・費用の観点で一覧にしました。まず自分に合いそうなサイトの見当をつけてから、各セクションの詳しい解説に進んでください。

サイト・方法対象レベル言語費用特徴公開・更新状況(2026年9月確認)
サンプルソース(MT4付属)超初心者英語コメント無料MT4を入れればすぐ読める・最初の一歩に最適MT4に同梱(2005-2014年版のコード)
MT4でEA自作しちゃお~初心者〜中級者日本語無料関数リファレンスとサンプルが網羅的閲覧可。更新履歴の最終記載は2023年4月
MQL5中級者〜上級者英語中心無料(一部有料)世界最大級、コード量が膨大で玉石混交閲覧可
書籍で学ぶ初心者〜中級者日本語有料(書籍代)体系立てて基礎から学べる2012年4月発売・販売中
EAつくーるプログラミング未経験者日本語・ノーコード有料(29,800円)条件選択だけでコードを自動生成販売中(29,800円・MT4/MT5対応)
EarnForex初心者〜中級者英語(解説が丁寧)無料戦略解説付きのオープンソースEAが豊富2026年9月にも更新あり
GitHub中級者〜上級者英語中心無料ライセンス確認が必須閲覧可
Forex-Station中級者〜上級者英語無料フォーラム形式、実行ファイルのみの配布も多い2026年9月も投稿あり
フランのなるほどMT4初心者日本語無料辞典・エラー一覧などリファレンスが充実2026年9月にも更新あり
ぷろぐらむFX初心者〜中級者日本語無料ロジック別(トレンド系・オシレーター系等)に逆引きできる2026年9月24日に更新
当ブログ(EAプログラミング)初心者〜中級者日本語無料実際に運用しているEAの一部コードを解説付きで公開公開中
※公開・更新状況は、2026年9月26日に各サイトへアクセスして確認した結果です。閉鎖したサイトはありませんでしたが、「MT4でEA自作しちゃお~」のように更新が止まっているサイトもあります。

MT4付属のサンプルEA「MACD Sample.mq4」

まずは、MT4に最初から付属しているサンプルソースです。

MT4にはMACD Sample.mq4というサンプルEAが入っています。まずはMACD Sampleのコードを読めるようになることが最初の一歩です。読めるようになってから、ネットで他のソースコードを探しに行きましょう。

使う前の注意点
ネットで見つけたソースコードには、配布元の環境に合わせた設定がそのまま残っていることがよくあります。ロット数・マジックナンバー・通貨ペアの決め打ちが典型例です。自分の口座でコンパイル・デモ稼働させ、パラメータを確認してから実運用に移しましょう。

下記のMACD Sample.mq4は、MACD(移動平均収束拡散法)とEMA(指数移動平均)を組み合わせたシンプルなトレンドフォロー型のロジックです。読み解くポイントは次の3つです。

  • エントリー条件:保有ポジションが0のときだけ判定する。買いはMACDが0より下でシグナルラインを上抜けたとき、売りは0より上で下抜けたとき。さらにMACDの大きさがMACDOpenLevel以上で、26期間EMAの傾きがトレンド方向と一致したら新規注文(OrderSend)を出す
  • 決済条件:MACDが0ラインの反対側でシグナルラインを逆方向に抜け、大きさがMACDCloseLevel以上なら決済(OrderClose)し、加えてTrailingStopパラメータでトレーリングストップも管理している
  • 安全チェック:チャートのバー数が100本未満、またはTakeProfitが10未満の場合は取引を行わない、というごく基本的なバリデーションが冒頭に入っている

この「エントリー条件を判定する→注文を出す→保有中は決済条件とトレーリングストップを見張る」という3段構成は、他のどのEAにも共通する基本パターンです。この型を先に覚えておくと、他サイトのコードも速く読めるようになります。

コード冒頭にある6つの入力変数(input)は、それぞれ次のような意味を持っています。

パラメータ名デフォルト値意味
TakeProfit50利益確定の値幅(pips換算前のポイント数)
Lots0.11回のエントリーで発注するロット数
TrailingStop30トレーリングストップの追従幅
MACDOpenLevel3新規エントリーに必要なMACD値の大きさ(0ラインからの距離、ポイント単位)
MACDCloseLevel2決済に必要なMACD値の大きさ(ポイント単位)
MATrendPeriod26トレンド判定に使うEMAの期間

注意したいのは、TakeProfitやTrailingStopの単位が「pips」ではなく「ポイント(Point)」だという点です。値を価格に直すときはTakeProfit*Pointのように掛け算しています。

現在の国内業者で主流の表示桁数(ドル円は小数点以下3桁、ユーロドルは5桁)で、既定値を換算すると次のようになります。

パラメータ(既定値)ドル円(Point=0.001)ユーロドル(Point=0.00001)
TakeProfit(50)0.050円=5pips0.00050=5pips
TrailingStop(30)0.030円=3pips0.00030=3pips
TakeProfitの下限チェック(10)0.010円=1pips0.00010=1pips

MACD Sampleの既定値をpipsに換算した試算(表示桁数は2026年9月時点の国内業者で一般的な値)

小数点以下2桁・4桁表示が主流だった時代のコードでは、同じ50が50pipsを意味していました。古いソースコードを流用するときは、利確幅が想定の10分の1になっていないかを最初に確かめてください。

もう1つ、新規注文前のAccountFreeMargin()<(1000*Lots)という資金チェックも、口座通貨で結果が変わります。Lotsが0.1なら判定の基準は1000×0.1=100で、円建て口座では「余剰証拠金が100円未満なら発注しない」という意味になり、ほぼ機能しません。

//+------------------------------------------------------------------+
//|                                                  MACD Sample.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
input double TakeProfit    =50;
input double Lots          =0.1;
input double TrailingStop  =30;
input double MACDOpenLevel =3;
input double MACDCloseLevel=2;
input int    MATrendPeriod =26;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   double MacdCurrent,MacdPrevious;
   double SignalCurrent,SignalPrevious;
   double MaCurrent,MaPrevious;
   int    cnt,ticket,total;
//---
// initial data checks
// it is important to make sure that the expert works with a normal
// chart and the user did not make any mistakes setting external 
// variables (Lots, StopLoss, TakeProfit, 
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars
//---
   if(Bars<100)
     {
      Print("bars less than 100");
      return;
     }
   if(TakeProfit<10)
     {
      Print("TakeProfit less than 10");
      return;
     }
//--- to simplify the coding and speed up access data are put into internal variables
   MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
   MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
   SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
   SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
   MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
   MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
   total=OrdersTotal();
   if(total<1)
     {
      //--- no opened orders identified
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ",AccountFreeMargin());
         return;
        }
      //--- check for long position (BUY) possibility
      if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && 
         MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
           }
         else
            Print("Error opening BUY order : ",GetLastError());
         return;
        }
      //--- check for short position (SELL) possibility
      if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && 
         MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("SELL order opened : ",OrderOpenPrice());
           }
         else
            Print("Error opening SELL order : ",GetLastError());
        }
      //--- exit from the "no opened orders" block
      return;
     }
//--- it is important to enter the market correctly, but it is more important to exit it correctly...   
   for(cnt=0;cnt<total;cnt++)
     {
      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         //--- long position is opened
         if(OrderType()==OP_BUY)
           {
            //--- should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && 
               MacdCurrent>(MACDCloseLevel*Point))
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
         else // go to short position
           {
            //--- should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent && 
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
        }
     }
//---
  }
//+------------------------------------------------------------------+

MACD Sampleの使い方とソースの保存場所

MACD SampleはMT4のナビゲーター「エキスパートアドバイザ」に最初から登録されています。チャートにドラッグ&ドロップし、設定画面の「全般」タブで「自動売買を許可する」にチェックを入れます。ツールバーの「自動売買」ボタンもオンにすれば、デモ口座でそのまま動かせます。

ソースファイルは、MT4の「ファイル」→「データフォルダを開く」で開いたフォルダの「MQL4」→「Experts」にMACD Sample.mq4として入っています。同じ場所には、移動平均線を使ったもう1つのサンプルMoving Average.mq4もあります。

インジケーターのソースコードを読みたいときは、同じデータフォルダの「MQL4」→「Indicators」を開きます。MACD.mq4・RSI.mq4・Bands.mq4(ボリンジャーバンド)など、MT4標準のインジケーターの多くがソース付きで同梱されています。

MT4でEA自作しちゃお~|日本語のMQL4リファレンス

MT4でEA自作しちゃお~のトップページ画面

MQLのリファレンスとサンプルコードを提供しており、EA開発に必要な基本的なコードを簡単に参照できます。トップページの更新履歴の最終記載は2023年4月で、それ以降は更新されていません(MT4のリリースノートのページは2017年5月のBuild 1080が最後です)。サイト内は主に次のカテゴリに分かれています。

  • 初心者向け解説
  • 関数リファレンス
  • サンプルコード解析

新規注文(OrderSend)・決済(OrderClose)・トレーリングストップの実装方法など、EA作成でつまずきやすいポイントを個別のページで解説しています。

特に「サンプルソースコード解析」のページでは、MT4付属のもう1つのサンプル「Moving Average」を日本語コメント付きに書き換えて解説しています。MACD Sampleと同じ「判定→注文→決済」の流れを日本語で追えるので、本記事のサンプル節と合わせて読むと理解が深まります。

関数リファレンスは基本的な関数をひととおり網羅しているので、コードを読んでいてわからない関数が出てきたときの辞書として使えます。

MT4でEA自作しちゃお~

MQL5|コードベースで世界中のソースコードを探す

MQL5のコードベースページ画面

MQL5は、MT4/MT5の開発元MetaQuotes社が運営する世界最大級のコミュニティで、EAのソースコードも数多く公開されています。

コード内のコメントや作者の説明は英語が中心で、翻訳してもわかりにくい部分はあります。それでも参考になるコードは多いので、基本的な書き方を身につけたら探してみる価値があります。

ソースコードはMQL5の「コードベース」セクションに掲載されています。同じMQL5内には、無料・有料のEAが並ぶ「マーケット」セクションもあります。ただしマーケットのEAは実行ファイルでの提供で、ソースコードは読めません。コードを学びたいときはコードベース、完成済みのEAを試したいときはマーケットと使い分けましょう。

MQL5コードベース(MT4用エキスパートアドバイザ)

あわせて読むMT4の無料EAおすすめ10サイト|勝てる選び方【2026年】MT4で使える無料EA(自動売買)を配布している国内外10サイトを比較紹介。指定口座開設だけで使える人気EAから、Myfxbookで実績公開中のEAまで、無料EAを選ぶ際の注意点とあわせて解説します。

書籍でMQL4プログラミングを体系的に学ぶ

EA作成において考慮すべきポイントを、実際のサンプルコードとともに詳しく解説している書籍です。ストップレベルやポイントの扱い方など、EA作成でつまずきやすい要素も丁寧に説明されています。EA開発の基礎から応用までを1冊で学びたい人に向いた本です。

日本語版の発売は2012年4月で、2026年9月時点でも楽天ブックスなどで購入できます。MT4ビルド600(2014年)より前の本なので、その後に加わった書き方は公式のMQL4リファレンスで補いましょう。

先ほど紹介した書籍以外にも、MQL4・MQL5プログラミングを扱った書籍はいくつかあります。当ブログの別記事で、目的別(初心者向け・実践重視など)におすすめの書籍をまとめていますので、あわせてチェックしてみてください。

あわせて読むMT4(MQL4) EA開発&運用を学ぶためのオススメ書籍、本MT4(MQL4)のEA開発と運用を学ぶオススメ書籍をレベル別に紹介。書籍選びで失敗しない3つの視点や学習リソースも解説します。

EAつくーる|ノーコードでMQL4コードを自動生成

EAつくーるを使えば、自分の希望する条件に基づいたソースコードを自動で生成できます。MT4に標準搭載のインジケーターに加えて市販のインジケーターも組み合わせられ、代表的な指標には次のようなものがあります。

  • 移動平均線
  • MACD
  • RSI
  • ボリンジャーバンド

指標を選んだら、エントリー条件・決済条件・ロット数・トレーリングストップの有無などを画面上で選んでいきます。選び終えると、条件どおりのEAのソースコードが書き出されます。

生成されたソースコードは、そのまま使用しても良いですし、自分で少し修正・改良してオリジナルのEAに仕上げることも可能です。生成されるコードも「エントリー判定→注文→決済判定」というEAの基本の流れに沿っているので、MACD Sampleを読み解いた後なら追いやすいはずです。

生成コードには処理の意味を説明するコメントが付くため、自分でコードを書けない段階でも、MQLの書き方を学ぶ教材として使えます。

販売元のGogoJungleでは、販売実績1,982本・レビュー評価★3.9(16件)となっています(2026年9月26日時点)。価格は29,800円で、2026年9月時点ではMT4用に加えてMT5用のEAも作成できます。

EAつくーる:ノーコードで誰でも簡単EA開発、完全自動・半自動取引であなたのトレードを少しでも楽に!EAつくーる | GogoJungle

EarnForex|解説付きの無料オープンソースEA

EarnForexは、無料のオープンソースEA・インジケーターを体系的に公開している海外の老舗サイトです。トレーリングストップやブレイクイーブン管理といった実務でよく使う補助系EAから、学習用のテンプレートEAまで幅広く揃っています。

各EAのページには戦略の解説・パラメータの説明・注意点がまとまっており、ダウンロードだけでなくコードの読み方を学ぶ教材としても優秀です。GitHub上にも公式Organization(EarnForex)があり、そちらからソースコードを直接確認することもできます。

EarnForex

GitHub|MQL4のリポジトリをトピックから探す

GitHubのロゴ

GitHubは、ソースコードのバージョン管理を行うためのサービスですが、MQLのソースコードも公開されています。

内容のほとんどが英語なので少しハードルが高いかもしれませんが、基本を理解した後にGitHub上のソースを確認してみると役立つでしょう。

リポジトリごとにライセンス(MIT・GPL等)が異なるため、コードを流用・公開する場合はライセンス表記の要否を確認しておくと安心です。また更新が止まっているリポジトリも多いため、MT4/MT5の最新ビルドで動くかは自分の環境で必ず確認してください。

GitHub

Forex-Station|海外フォーラムで共有されるEA

Forex-Stationのフォーラム画面

フォーラム形式のサイトでは、EAやインディケーターのソースコードが共有されています。

内容は英語なので少しハードルが高いかもしれませんが、貴重な情報が見つかる可能性があります。

フォーラムで配布されるEAは、ソースコードではなく実行ファイル(.ex4/.ex5)だけのことも多くあります。出所不明のファイルを、そのまま実口座で動かすのは避けましょう。まずはデモ口座で動作とロジックを確認するのが安全です。

Forex-Station

フランのなるほどMT4|初心者向けMQL4学習サイト

MQL4プログラミングの学習に特化したサイトです。用語辞典・エラー一覧・列挙値一覧といったリファレンス系のコンテンツに加え、実際に動くサンプルEAも複数公開されています。

「できるだけ簡単に」をコンセプトに、初心者が手を動かしながら学べる構成になっているため、サンプルソースだけでは物足りない方の次のステップとしておすすめです。

フランのなるほどMT4

ぷろぐらむFX|ロジック別のEAソースコード公開まとめ

トレンド系・オシレーター系・ZigZag系など、インジケーター別にEAソースコードがまとめられているサイトです。目的のロジックから逆引きでコードを探したいときに使いやすい構成になっています。

ぷろぐらむFX(EAソースコード公開まとめ)

見つけたソースコードをMT4で動かすには?

ここまで紹介したサイトでソースコード(.mq4ファイルやコードの本文)を見つけても、そのままではMT4上で動きません。EAとして稼働させるまでの流れを簡単に押さえておきましょう。

ソースコードをEAとして稼働させる流れ(MT4)

1
MetaEditorを開く
「ツール」→「MetaQuotes Language Editor」(F4)
2
ソースコードを貼り付ける
新規EAを作成して貼り付け
3
コンパイルする
.mq4 → .ex4に変換
4
チャートに適用
ドラッグ&ドロップ。まずデモ口座で確認
  • MT4を起動し、メニューの「ツール」→「MetaQuotes Language Editor」(またはF4キー)でMetaEditorを開く
  • MetaEditorで「ファイル」→「新規作成」からEAを新規作成し、入手したソースコードを貼り付ける。.mq4ファイルなら、データフォルダの「MQL4」→「Experts」に置いてMetaEditorで開いてもよい
  • 「コンパイル」ボタンを押し、.mq4を.ex4に変換する(エラーが出た場合はMT4のビルドバージョンとコードの互換性を確認する)
  • MT4のナビゲーターから対象のEAをチャートにドラッグ&ドロップし、パラメータ(ロット数・マジックナンバー等)を確認したうえで、まずはデモ口座で動作確認する

コンパイル時にエラーが出る場合、MQL4のコードをMT5のMetaEditorで開いている、またはビルド600(2014年)より前の古い書き方が残っている、のどちらかがよくある原因です。エラーメッセージに表示される行番号と関数名を手がかりに、MQL4リファレンスで正しい書き方を調べましょう。

あわせて読むFX EAの自作・作り方|MQL4で始める初心者向けEA開発入門FXのEAはMT4付属のMetaEditorとMQL4で無料で自作できます。必要なもの・難しさ、ひな形作成からコンパイル・バックテストまでの手順と全コード、未経験者向けのノーコードツール・ChatGPT・作成代行も解説します。

入手したソースコードが使えるか見極める方法

ソースコードが手に入っても、利益の出るEAだとは限りません。「MT4でEA自作しちゃお~」のサンプルのように、配布元が学習用と明記しているコードもあります。

実口座に載せる前に、次の4点を順に確かめておくと失敗を減らせます。

  1. ストラテジーテスターで過去データを検証する:MT4の「表示」→「ストラテジーテスター」(Ctrl+R)を開く。EA・通貨ペア・期間を選んで実行し、損益曲線と最大ドローダウンを確認する
  2. ソースファイル(.mq4)があるかを確かめる:実行ファイル(.ex4)だけの配布では中身を読めず、ロジックの確認も改変もできない
  3. 最終更新日と対象ビルドを見る:MT4ビルド600(2014年)より前に書かれたコードは、現在のMetaEditorでコンパイルするとエラーや警告が出ることがある
  4. パラメータの単位を業者の表示桁数に合わせる:利確・損切り幅をポイントで指定するコードは、5桁・3桁表示の業者だと想定の10分の1になることがある。MACD Sampleの換算表の要領で確かめる

当ブログで公開しているEAソースコード

当ブログでも、EAのソースコードの一部を解説付きで公開しています。

EAプログラミング

あわせて読むMT4 EAのトレーリングストップ実装|MQL4コード4方式MT4(MQL4)のEAにトレーリングストップを組み込むコードを、固定幅・ATR・高安値・移動平均の4方式で紹介。5桁業者のpips換算、StopLevel、OrderModifyのエラー1対策まで入れた共通関数付きです。

レベル別のおすすめルート

入手先が11もあると、どこから手を付ければいいか迷うはずです。今のレベルごとに、回る順番の目安は次のとおりです。

レベル別のおすすめルート

超初心者(EA未経験)

  • MT4付属のサンプルソースで基本構造を掴む
  • 用語は「フランのなるほどMT4」で調べる

初心者(基本構造は理解した)

  • 「MT4でEA自作しちゃお~」「ぷろぐらむFX」で近いサンプルを改造する
  • 難しければ「EAつくーる」でノーコード生成

中級者以上

  • MQL5・EarnForex・GitHubで高機能なEAを探す
  • ライセンスを確認して取り込む

体系的に学び直したい

  • 紹介した書籍を通読して知識を整理する
  • 超初心者(EA未経験):まずはMT4付属の「サンプルソース」でコードの基本構造を掴み、わからない用語が出てきたら「フランのなるほどMT4」の辞典で調べる
  • 初心者(基本構造は理解した):「MT4でEA自作しちゃお~」や「ぷろぐらむFX」で自分が作りたいロジックに近いサンプルを探し、実際に手を動かして改造してみる。コードを書くこと自体が難しければ「EAつくーる」でノーコード生成から始めてもよい
  • 中級者以上(英語のコードも読める):「MQL5」のコードベースや「EarnForex」「GitHub」で、より高機能なEA・インジケーターを探す。ライセンスを確認したうえで、自分のロジックに取り込む
  • 体系的に学び直したい:書籍の節で紹介した本を通読し、断片的に覚えた知識を一度整理する

どのサイトから読み始めるにしても、いきなり複雑なロジックを追いかける必要はありません。今の自分のレベルに合った入手先を1つ選び、コードを実際に読んで動かしながら、自分のアイデアを少しずつEAの形にしていきましょう。

どの入手先のコードでも、実口座に載せる前にバックテストとデモ口座での稼働で確かめる手順は変わりません。

よくある質問

MQL4のEAソースコード探しについて、よく聞かれる質問をまとめました。著作権やコンパイルエラーのように使う前に気になる点から、ex4ファイルの扱いやサンプルの保存場所まで扱っています。詳しい手順は各見出しの本文もあわせて確認してください。

Q1. ネットで拾ったEAソースコードを使うのは違法ではない?

A1. 他人が書いたソースコードには著作権があり、無断で複製・再配布すれば著作権侵害にあたる可能性があります。自分の口座で個人的に動かして学習する分には、リスクは低いといえます。改変したコードを販売・再配布するなら、GitHubでは付随するライセンス(MIT・GPL等)、配布サイトでは利用規約を必ず確認してください。

Q2. プログラミング未経験でもEAは作れる?

A2. 「EAつくーる」のようなノーコードツールを使えば、コードを1行も書かずに条件を選ぶだけでEAを生成できます。将来は自分でロジックを組みたいなら、MT4付属のサンプルEAと、「MT4でEA自作しちゃお~」「フランのなるほどMT4」のような日本語の学習サイトで基礎を固めるのが近道です。

Q3. コンパイルエラーが出て動かないときは?

A3. 多くは次の2つが原因です。1つは、MQL4のコードをMT5のMetaEditorでMQL5としてコンパイルしている場合で、AccountFreeMarginのようなMQL4専用の関数がMQL5には無く、OrderSendも引数の形が違うためエラーになります。もう1つは、ビルド600(2014年)より前に書かれた古いコードで、その後に予約語になった単語(class・newなど)を変数名に使っているケースです。エラーメッセージの行番号と関数名をもとに、MQL4の公式リファレンスで書き方を確認しましょう。

Q4. 見つけたソースコードをそのまま実口座で使っても大丈夫?

A4. おすすめしません。配布元が想定した通貨ペア・時間足・口座タイプを前提に書かれていることが多く、環境が異なると意図しない挙動をする可能性があります。必ずデモ口座で一定期間の動作確認をしてから、少額での実運用に移してください。

Q5. ex4ファイルからソースコード(mq4)に戻せる?

A5. 戻せません。MetaEditorのコンパイルは.mq4から.ex4への一方向で、.ex4から元のソースコードを復元する公式の方法はありません。中身を読んだり改造したりしたいなら、最初から.mq4が公開されている入手先を選びましょう。

Q6. MT4付属のサンプルEAのソースコードはどこにある?

A6. MT4の「ファイル」→「データフォルダを開く」で開いたフォルダの「MQL4」→「Experts」にあります。MACD Sample.mq4とMoving Average.mq4が入っており、MetaEditorで開けば中身を読めます。

Q7. MT4のインジケーターのソースコードも手に入る?

A7. 手に入ります。MT4標準のインジケーターの多くは、データフォルダの「MQL4」→「Indicators」にソース(.mq4)付きで同梱されています。MQL5のコードベースやGitHubにも、有志が作ったインジケーターのソースが公開されています。

※本記事は情報提供を目的としたもので、特定のEA・金融商品の売買を推奨するものではありません。FX(外国為替証拠金取引)は元本が保証されておらず、レバレッジにより預けた証拠金を上回る損失が発生する可能性があります。記事内の成績・数値は過去の実績であり、将来の利益を保証するものではありません。投資の最終判断はご自身の責任でお願いします。

QUEST CLEAR!

最後まで読んでくれて、ありがとうございます。
つぎのクエストは、この下から選べます。

トム

この記事を書いた人トム

・現役エンジニア(本業はJavaバックエンド)
・以前はMT4のEAを自作してFX自動売買をしていました(現在は引退)
・今はポイ活を「時給」で検証・攻略しています