作成日
:2025.05.13


2025.10.24 10:07
MetaTrader4(MT4)でEA(自動売買プログラム)のバックテストをしていると、「あれ?動かない」「結果が安定しない」といったトラブルに出くわすことがあります。特に慣れていないうちは原因を見つけるのもひと苦労です。
本記事では、初心者が遭遇しやすい問題をケースごとに整理し、それぞれの解決方法をわかりやすく解説します。バックテストをスムーズに進めるための参考にしてください。
そもそもストラテジーテスター上でEAを選択できないなど、バックテストを行う前に不具合につまづくことがあります。
ストラテジーテスターの「エキスパートアドバイザ」コンボボックスの一覧に、バックテストを行いたいEAが表示されず、そもそもバックテストでEAを選択できないことがあります。
EAがMT4に正しくインストールされていなかった場合、ストラテジーテスターに表示されません。よって、EAがMT4に正しくインストールされているか確認する必要があります。
MT4の「ファイル」メニュー(①)から「データフォルダを開く」(②)を選択しましょう。
次に「MQL4」のフォルダをクリックします。
続いて「Experts」のフォルダ内を確認してみましょう。
フォルダ内に拡張子が「.ex4」のファイルが存在するか確認します。
「.mq4」のファイルしか存在しない場合は、ソースファイルしか存在せずコンパイルされていない状態ですので、実行形式のファイルである「.ex4」へコンパイルしましょう。
MT4を再起動する、または「ナビゲーター」ウィンドウの「エキスパートアドバイザー」からEAを右クリックして「更新」を押すとコンパイルされます。
EAによっては、「.ex4」ファイルのほかに「indicator」や「Libraries」などのフォルダにファイルが入っている場合があります。その場合、「MQL4」配下の同じ名前のフォルダに配置する必要があります。
MT4で精度の高いバックテストを行うには、外部の業者が配布しているヒストリカルデータを取り込むことがベストです。ところが、いざデータをインポートしようとしてもうまく反映されず、「テストが途中で終わってしまう」「チャートに値動きがほとんど表示されない」といった場面に出くわすことがあります。
こうしたケースでは、実際にはデータが正しくインポートされていないことが原因です。基本的なヒストリカルデータのインポート方法は、以下をご覧ください。
インポートするヒストリカルデータのフォーマットがMT4の所定のフォーマットに合っていない場合、正常にインポートできません。ファイルのセパレータや区切り位置を正しく設定しましょう。
たとえば、以下画面の一番上のデータの場合、CSVファイルのデータは次のようになります。
"2024.12.03,07:00,7.45642,7.45645,7.45642,7.45645,21"
年月日と時刻がセパレータ(ここではカンマ)で区切られている点に注意が必要です。
インポートしたデータは、MT4のメニューの「ツール」から「ヒストリーセンター」を開いて確認できます。データが正しく反映されていれば、インポートした一番古い日付まで遡れます。
新たにヒストリカルデータをインポートする場合、同じ通貨ペアの既存のヒストリカルデータを削除しておく必要があります。古いデータと新しいデータが混在すると、チャート上で不自然な価格の飛びが発生したり、バックテストの結果が正確に反映されなかったりといった不具合につながる可能性があります。
MT4のメニューの「ファイル」から「データフォルダを開く」を選択し、「history」(①)をクリックします。接続サーバの名前と一致するフォルダを開くと、以下のように通貨ペアごとの.hstファイル(②)が格納されています。
新たにインポートしたいヒストリカルデータと同じ通貨ペア・時間足のファイルがすでにある場合は、削除しましょう。
バックテスト時の主な不具合として「一度も取引されない」「すぐに終了してしまう」といった症状があります。それぞれの症状が起きた場合に確認するべきことや対処方法について順番にみていきしましょう。
EAを選択してバックテストを実行したのに、一度も取引されずにバックテストが終わってしまうことがあります。
最初に確認しておきたいのがライセンス制限です。口座縛り機能付きのEAでは、特定のFX業者や特定の口座番号でないと動作しないことがあります。ストラテジーテスターの「操作履歴」タブを確認しましょう。
「操作履歴」タブを右クリックして「すべてのジャーナルを消去」した後、バックテストを実行するとその際のエラーメッセージのみを見ることができます。
たとえば、口座縛り機能付きEAが初期化時に口座チェックを行っている場合、「initialization failed」などのエラーが表示されます。
このようなエラーが確認できた場合は、指定されたFX業者や口座でバックテストを行うか、利用ライセンスの詳細を提供元に問い合わせましょう。
EAによっては、特定の通貨ペア(USDJPY専用)や時間足(H1専用)でしか動作しないように設計されていることがあります。このようなEAでは、バックテスト時に通貨ペアや期間の指定を間違って設定すると、バックテストが実施されません。
仕様を確認する方法として一番手軽なのが、マニュアルのチェックです。多くのEAのマニュアルには「推奨通貨ペア」「推奨時間足」が明記されています。
たとえば「Night Swimmer MT4」というEAの場合、概要部分で推奨されているシンボル「EURUSD・GBPUSD・EURCHF・USDCHF」、推奨時間枠「M5」と明示されています。
画像引用:MQL5
マニュアルを見ても仕様が分からない場合は、配布元のサポートへの問い合わせも検討してみると良いでしょう。サポートから明確な回答が得られなかった場合には、補足的な手段としてソースコードを開いて自分で確認する方法もあります。
MT4のメニューの「ファイル」から「データフォルダを開く」→「MQL4」→「Experts」の順にクリックし、確認したいEAのソースファイル(.mq4ファイル)を開きましょう。ソースコードを検索(①)して、「OrderSend("USDJPY", ...)」(②)のような記述があれば、そのEAが特定の通貨ペアに固定されている可能性があります。
さらに、口座タイプによっては通貨ペアのシンボル表記が変わることもあります。
たとえば、ドル円は通常「USDJPY」ですが、ブローカーによっては「USDJPY#」のように独自表記になっているケースがあります。多くのEAはこうした表記の違いに対応していますが、対応していない場合もあるため、事前に仕様を確認しておくと安心です。
EAの中には、スプレッドが設定した値よりも広がった場合には取引しないよう制限をかける「スプレッドフィルター」機能を備えたものがあります。バックテストで設定したスプレッドがスプレッドフィルター以上だと、一度も取引されないままバックテストが終わってしまいます。
ストラテジーテスターのセッティング画面で、バックテストに用いるスプレッドの値を確認しましょう。
設定の際は、ストラテジーテスターのスプレッドは「pips」単位ではなく、「point」単位である点に注意しましょう。「2(point)」や「5(point)」など、マニュアルに記載のあるスプレッドフィルターより低い固定値を設定しておけば問題ありません。
スプレッドが広いときにはエントリーしない安全装置の役割を果たすスプレッドフィルターは、以下のようなEAによく組み込まれています。
バックテストは実行できたものの、期間指定した終了日まで到達せず、すぐにテストが終了してしまう場合があります。
バックテストが期間の途中で終了してしまう場合は、まずストラテジーテスターの「操作履歴」タブを確認してみましょう。
よくあるのが、テスト中に強制ロスカットが発生し、それ以上の取引が行えなくなるケースです。強制ロスカットになると「操作履歴」タブには「Stop Out」というメッセージが表示されます。
EAが強制ロスカットになってしまう際に見直すべきなのが、初期証拠金が少な過ぎないか、またはロット数が大きすぎないかという点です。
まずはバックテスト時に指定する初期証拠金の金額と通貨単位が、EAの推奨値と合っているかをチェックしましょう。
ストラテジーテスターの「エキスパート設定」ボタンをクリックします。
「テスト設定」タブを選択すると、初期証拠金を確認できます。100万円ほどの設定になっていれば通常問題はありませんが、それでもロスカットが発生する場合は取引ロット数に問題がある可能性があります。
初期証拠金の通貨コンボボックスは選択するだけでなく編集もできます。円建てでテストを行いたい場合は「JPY」と手入力しましょう。
また「パラメーターの入力」タブを選択すると、EAが用いる各種パラメーターが確認できます。ロット数に該当する項目を、利用している業者の最小ロット数(0.01など)に指定して、バックテストが最後まで完走するかを確認してみましょう。
パラメータで単利・複利を設定できるEAでは、「複利(MM=true)」になっている場合、証拠金残高に応じてロット数を計算するため、最小ロットや証拠金要件を満たさずにエントリーされない場合があります。その場合、「単利(MM=false)」を設定して、最小ロットより少し上のロットに固定してテスト実行してみると良いでしょう。
証拠金とパラメーターを見直してもロスカットが発生する場合は、EAのロジック自体に問題がある可能性も考えられます。
特にEAの内部で適切なエラー処理が行われていないと、テストは一見正常に進みますが、特定のポイントで停止してしまいます。
たとえば、ロジック上にエラーがあると以下のように 「操作履歴」タブ内に、「zero divide(ゼロ割りというロジック上のエラーの発生)」と表示されることがあります。
ロジック上のエラーは他にも多数あります。EA自体にミスがあり発生したエラーの対処方法は、EAを自作しているか第三者から提供されているかで変わります。
| ケース | 対処法 |
|---|---|
| EAを自作している場合 | エラー内容を確認してロジックを修正する |
| 第三者からEAが提供されている場合 | 提供元に確認する |
| EAを自作している場合 |
| 数秒~数分 |
| 第三者からEAが提供されている場合 |
| 提供元に確認する |
また、特定の期間で毎回エラーが発生する場合は、その期間を除いてバックテストを行い回避できるか試してみましょう。
バックテストの期間(開始日・終了日)が、ダウンロードしたヒストリカルデータの範囲に収まっていないと正しくテストできません。テスト期間とデータ範囲の整合性が取れているかを確認しましょう。
MT4のメニューの「ファイル」から「オフラインチャート」を開くと、ヒストリカルデータの開始・終了日を確認できます。(開始日は「差出人」と表示されます。)
バックテスト期間のデータが正しく取り込まれていない場合は、再度ダウンロードしましょう。
EAによっては、バックテストを行う際に大量のログを出力する場合があります。何度もバックテストを実行し、ログの格納先ドライブの容量が不足すると、バックテストが途中で停止してしまう可能性があります。
ログの格納先ドライブを確認するには、MT4のメニューの「ファイル」から「データフォルダを開く」を選択し、「tester」(①)→「history」「logs」(②)の順に開きます。フォルダ内の「.fxt」ファイルや「.log」ファイルなどの不要なファイルを削除して容量を空けましょう。
「.fxt」ファイルは、過去のバックテストで擬似的に作成されたティックデータ、「.log」ファイルは、過去のバックテストで出力されたログのため、削除してしまっても基本的に問題ありません。
バックテストは実行されたものの、「結果が表示されない」「結果が安定しない、または良すぎたり悪すぎたりする」といった症状があります。それぞれの症状が発生した場合の対処法についてみていきしましょう。
バックテストは実行できたものの、結果が表示されない場合があります。
ストラテジーテスターを用いた最適化を行っている場合、MT4の初期設定では損益がマイナスになった結果は表示されません。
「最適化結果」タブ上で右クリックしてコンテキストメニューを表示した上で「マイナスの結果を表示しない」のチェックを外しましょう。次回の最適化結果から、マイナスの結果も表示されるようになります。
バックテストはそもそも負荷が高い処理です。したがって、特に処理に充てられるリソースが限定されていることが多いVPS環境下では、いくら待ってもバックテストが終了しなかったり、MT4がフリーズしたりすることがあります。
加えて、負荷を抑えるためには以下の方法も有効です。
ただし、負荷を軽減すると、バックテストの精度が落ちることがあるので、どの項目を調整するのかバランスが重要です。
ビジュアルモードはバックテスト時に実際の値動きを見たり、インディケータなどをグラフィカルに表示しながらEAの動きを確認できますが、描画処理の負荷が高く時間がかかってしまいます。
ストラテジーテスターの「ビジュアルモード」のチェックを外して症状が改善するか試してみましょう。
バックテストは最後まで実行できたのに、結果が安定しない症状が発生することがあります。結果が安定しない原因として、スプレッドが広がっている際にバックテストをしていたり、欠損したデータでバックテストを行っていたりすることが考えられます。
ストラテジーテスターのスプレッドを「現在値」のままにしてバックテストを行うと、実行する日によって結果が大きくブレるケースがあるので注意が必要です。
特に土日に実施するバックテストでは、市場が閉じる直前のスプレッドが反映され、通常よりも高い値になる傾向があります。スプレッドの極端な広がりを避けるためには、スプレッドを「5(point)」や「10(point)」などの固定値に設定すると良いでしょう。
遺伝的アルゴリズムを利用すると、パラメーター最適化の効率を高められます。ただし、総当たり方式と違ってランダム性があるため、実行するたびに結果が変わることがあります。
そのため、まずは広い範囲を遺伝的アルゴリズムで検証して大まかな傾向をつかみ、絞り込んだ後に総当たりで確認するといった使い分けが効果的です。
MT4では、外部からティックデータをインポートしなくても、M1足のデータから疑似的にティックデータを生成してバックテストを行うことができます。しかしあくまで疑似的な価格データなので、時にはモデリング品質が25%以下とかなり低いデータが生成されることがあります。
この問題は外部からインポートしたテックデータを用いてバックテストを行うことで解決できます。最も手軽な方法として知られているのは、Dukascopy社のデータのダウンロードです。Dukascopy社のデモ口座を開設すれば、取引システムJForexから無料で精度の高い1分足ヒストリカルデータをダウンロードできます。
各ブローカーがヒストリカルデータを配布していることもあるため、確認してみるとよいでしょう。
スプレッドを低く設定しすぎたり、口座通貨が揃っていなかったりすることで、バックテストの結果が良すぎたり、または悪すぎたりするケースがあります。
スプレッドが極端に低いなど不自然な値を設定すると、バックテスト結果が極端に良くなります。実際に提示されない低いスプレッドでバックテストを行っても意味はないので、取引環境に近い現実的なスプレッドを指定しましょう。
バックテストと口座の通貨が異なると、テスト結果が大きくずれてしまいます。
たとえば、円建て口座で1ロット当たり720円の手数料が発生するケースで考えてみましょう。以下は有料のヒストリカルデータを導入した際に見ることができる情報です。
手数料のベースにある「720」という数字は、1ロット当たり720円の手数料が発生するという意味です。円建て口座にもかかわらずバックテストの通貨をUSDにした場合、手数料がドル単位となってしまいます。つまり、手数料が720ドルと認識されるので、損益が大きく悪化します。
口座がドル建てか円建てかを確認し、バックテストの初期証拠金の通貨単位も同じものを利用しましょう。なお、ストラテジーテスターの初期証拠金のプルダウンでは「JPY」が選べないため、円建ての場合には「JPY」と手入力が必要です。
バックテストの結果と実運用でのトレード成績が異なるケースももちろんあります。
バックテストでわかる情報は、あくまで過去の相場でのパフォーマンスです。バックテストの結果は良かったものの、実運用を始めるとパフォーマンスが悪くなることは珍しくありません。
バックテストの結果を信頼して最初から大きなロット数で運用するのではなく「デモ口座で運用する」「小ロット数でリアル口座で運用する」「徐々にロット数を増やしていく」など、段階的に運用していきましょう。
小ロットで取引を行うなら、少額取引が可能なマイクロ口座を提供しているブローカーがおすすめです。
いろいろな銘柄でEAを動かしてみたいという方は、XMTrading(エックスエムトレーディング)が適しています。他社のマイクロ口座は主要銘柄のみに対応しているケースが多い中、XMTradingでは豊富な銘柄ラインナップから選べます。
スプレッドはやや広めですが、マイクロ口座も全ボーナス対象なので、ボーナスを活用すれば実質的なコストを抑えることも可能です。
一方、主要銘柄でスプレッドの狭さや約定力を重視する場合は、Exness(エクスネス)やXS.com(エックスエス)が選択肢になるでしょう。特にスキャルピング系のEAでは、わずかなスプレッド差が収益に大きく影響するため、取引コストを最小限に抑えられる業者を選ぶことが重要です。
主要ブローカーの最新のスプレッドは、当サイトのリアルタイムスプレッド比較ツールでご確認いただけます。海外FX各社の取引コストを比較する際は、ぜひご活用ください。
MT4でバックテストをする際に、上記で解説した以外の症状が発生することもあります。その場合は、基本的にエラーメッセージをチェックします。
実運用ではMT4のターミナルウィンドウにある「エキスパート」や「操作履歴」タブ、バックテストではテスターウィンドウにある「操作履歴」タブを確認してください。
そこに表示されているエラーメッセージをGoogleやYahoo!などで検索すると、解決策が見つかるはずです。
MT4に限らず、原因不明のトラブルはPCやアプリケーションの再起動で解消する場合があります。ここまで紹介した対策で解決できない場合には、PCやMT4の再起動を試してみましょう。
他のEAも正しく動かない場合には、MT4自体に不具合が生じている可能性もあるため、MT4を再インストールしてもう一度試してみることで解消する場合もあります。
ストラテジーテスターは、操作や設定に慣れるまでは思わぬ不具合が発生しやすいものです。しかし、症状の確認から原因の特定、対応方法の実行と段階を追って整理していけば、多くの問題は解決できます。
ログやジャーナルの確認、ヒストリカルデータの整合性チェック、パラメータ設定の見直しなどを丁寧に行うことで、検証の再現性と精度は少しずつ高まっていくでしょう。
行き詰まった場合には、本記事の該当セクションを参照しながら確認を進めてみてください。
![]()
作成日
:2025.05.13
![]()
最終更新
:2025.10.24
短期が中心のトレーダーや中長期が中心のトレーダー、元プロップトレーダー、インジケーターやEAの自作を行うエンジニアなどが在籍。資金を溶かした失敗や専業トレーダーに転身した経験など、実体験も踏まえてコンテンツを制作している。
ご覧いただきありがとうございます。Myforexでは、記事に関するご意見・ご感想をお待ちしています。
また、海外FX・仮想通貨の経験が豊富なライター様も随時募集しております。
お問い合わせ先 [email protected]

Vantage Tradingで出金遅延、担当者が語る原因と対応
2025.10.24 19:00

XMはゴールド(XAUUSD)のスプレッドも広い?ボーナス取引で実質お得
2025.10.22 19:00

bitcastleは詐欺業者?口座開設ボーナスで出金拒否多数
2025.10.21 19:30

PayPayを使って海外FXとの入出金が可能に?Binance JapanとPayPayが提携を発表
2025.10.17 19:00

SwiftTraderが資金難?SNSで出金トラブル報告が増加
2025.10.16 19:30

Exnessでシステムエラーによる入出金の不具合が発生?SNSでも報告が相次ぐ
2025.10.16 19:00
免責事項:Disclaimer
当サイトの、各コンテンツに掲載の内容は、情報の提供のみを目的としており、投資に関する何らかの勧誘を意図するものではありません。
これらの情報は、当社が独自に収集し、可能な限り正確な情報を元に配信しておりますが、その内容および情報の正確性、完全性または適時性について、当社は保証を行うものでも責任を持つものでもありません。投資にあたっての最終判断は、お客様ご自身でなさるようお願いいたします。
本コンテンツは、当社が独自に制作し当サイトに掲載しているものであり、掲載内容の一部または、全部の無断転用は禁止しております。掲載記事を二次利用する場合は、必ず当社までご連絡ください。
Myforexでは、このウェブサイトの機能向上とお客様の利便性を高めるためにクッキー使用しています。本ウェブサイトでは、当社だけではなく、お客様のご利用状況を追跡する事を目的とした第三者(広告主・ログ解析業者等)によるクッキーも含まれる可能性があります。 クッキーポリシー