作成日
:2025.05.13
2025.05.13 17:36
MetaTrader4(MT4)を使ってFXのEA(自動売買プログラム)をバックテストしていると、思わぬトラブルに直面することがあります。
EAが動かない、結果が安定しない、期待通りのパフォーマンスが出ないなど、初心者にとっては原因を特定するだけでも大変です。
本記事では、初心者が遭遇しやすい問題をケースごとに整理し、それぞれの解決方法をわかりやすく解説します。バックテストをスムーズに進めるための参考にしてください。
そもそもストラテジーテスター上でEAを選択できないなど、バックテストを行う前に不具合につまづくことがあります。
EAを選択できない状態とは、ストラテジーテスターの「エキスパートアドバイザ」コンボボックスの一覧に、バックテストを行いたいEAが表示されないことです。
EAがMT4に正しくインストールされていなかった場合、ストラテジーテスターに表示されません。よって、EAがMT4に正しくインストールされているか確認する必要があります。
MT4の「ファイル」メニューから「データフォルダを開く」を選択しましょう。
次に「MQL4」のフォルダをクリックします。
続いて、「Experts」のフォルダ内を確認してみましょう。
フォルダ内に拡張子が「.ex4」のファイルが存在するか確認します。
拡張子が「.mq4」のファイルはEAのソースファイル、「.ex4」のファイルはEAの実行形式のファイルを指します。
「.mq4」のファイルしか存在しない場合は、ソースファイルしか存在せずコンパイルされていない状態ですので、実行形式のファイルである「.ex4」へコンパイルしましょう。
MT4を再起動する、または「ナビゲーター」ウィンドウの「エキスパートアドバイザー」からEAを右クリックして「更新」を押すと、コンパイルされます。
コンパイルとは、編集する・作成するという意味の言葉です。EAのプログラムが記載されたソースファイルの内容を機械が理解できる言葉に変換することを指します。
バックテスト時の主な不具合として「一度も取引されない」「すぐに終了してしまう」といった症状があります。それぞれの症状が起きた場合に確認するべきことや対処方法について順番にみていきしましょう。
EAを選択してバックテストを実行したのに、一度も取引されずにバックテストが終わってしまうことがあります。
まずやるべきことは、ライセンスの確認です。口座縛り機能付きのEAでは、特定のFX業者や特定の口座番号でないと動作しないことがあります。ストラテジーテスターの「操作履歴」タブを確認しましょう。
「操作履歴」タブを右クリックして「すべてのジャーナルを消去」した後、バックテストを実行するとその際のエラーメッセージのみを見ることができます。
たとえば、口座縛り機能付きEAが初期化時に口座チェックを行っている場合、「initialization failed」などのエラーが表示されます。
このようなエラーが確認できた場合は、指定されたFX業者や口座でバックテストを行うか、利用ライセンスの詳細を提供元に問い合わせなければなりません。
EAによっては、特定の通貨ペア(USDJPY専用)や時間足(H1専用)でしか動作しないように設計されていることがあります。このようなEAでは、バックテスト時に通貨ペアや期間の指定を間違って設定すると、バックテストが実施されません。
EAが設計している条件と、バックテスト環境の設定が合っているかを確認しましょう。
EAの種類によっては、EAの実行形式である「.ex4」ファイル以外に設定ファイルなどを利用するように指示されている場合があります。
その際、設定ファイルなどの置き場所が、実運用時とバックテスト時で異なるので注意しましょう。
MT4の「ファイル」メニューから「データフォルダを開く」を選択して表示される、「MQL4\Files」というフォルダが実運用時のファイル置き場です。一方でバックテスト時は「tester\files」に置く必要がありますので、注意しましょう。
次にバックテストは実行できたのに、期間指定した終了日まで到達せずにすぐテストが終了してしまう場合があります。
まずは、 ストラテジーテスターの「操作履歴」タブを確認しましょう。バックテストがすぐに終了してしまう1つ目の原因は、EAがバックテスト中に強制ロスカットになり、それ以上の取引ができないことです。 その場合、「操作履歴」タブには「Stop Out」のメッセージが表示されます。
EAが強制ロスカットになってしまう原因として、ロジックが悪い・初期証拠金が少な過ぎる・ロット数が大きすぎるなどが考えられます。
バックテスト時に指定する初期証拠金の金額と通貨単位が、EAの推奨値と合っているかをチェックしましょう。
ストラテジーテスターの「エキスパート設定」ボタンをクリックします。
「テスト設定」タブを選択すると、初期証拠金を確認できます。
初期証拠金の通貨コンボボックスは選択するだけでなく編集もできます。円建てでテストを行いたい場合は「JPY」と手入力しましょう。
また「パラメーターの入力」タブを選択すると、EAが用いる各種パラメーターが確認できます。ロット数に該当する項目を、利用している業者の最小ロット数(0.01など)に指定して、バックテストが最後まで完走するかを確認してみましょう。
バックテストがすぐに終了してしまう2つ目の原因は、EAの内部で適切なエラー処理が行われていないことです。この場合、バックテストは毎回途中まで進みますが、ある場所で止まるケースがあります。
たとえば、ロジック上にエラーがあると以下のように 「操作履歴」タブ内に、「zero divide(ゼロ割りというロジック上のエラーの発生)」と表示されることがあります。
ロジック上のエラーは他にも多数あります。EA自体にミスがあり発生したエラーの対処方法は、EAを自作しているか第三者から提供されているかで変わります。
ケース | 対処法 |
---|---|
EAを自作している場合 | エラー内容を確認してロジックを修正する |
第三者からEAが提供されている場合 | 提供元に確認する |
EAを自作している場合 | エラー内容を確認してロジックを修正する |
---|---|
第三者からEAが提供されている場合 | 提供元に確認する |
また、特定の期間で毎回エラーが発生する場合は、その期間を除いてバックテストを行い回避できるか試してみましょう。
バックテストは実行されたものの、「結果が表示されない」「結果が安定しない、または良すぎたり悪すぎたりする」といった症状があります。それぞれの症状が発生した場合の対処法についてみていきしましょう。
バックテストは実行できたものの、結果が表示されない場合があります。
ストラテジーテスターを用いた最適化を行っている場合、MT4の初期設定では損益がマイナスになった結果は表示されません。
「最適化結果」タブ上で右クリックしてコンテキストメニューを表示した上で「マイナスの結果を表示しない」のチェックを外しましょう。次回の最適化結果から、マイナスの結果も表示されるようになります。
バックテストはそもそも負荷が高い処理です。したがって、特に処理に充てられるリソースが限定されていることが多いVPS環境下では、いくら待ってもバックテストが終了しなかったり、MT4がフリーズしたりすることがあります。
加えて、負荷を抑えるためには以下の方法も有効です。
ただし、負荷を軽減すると、バックテストの精度が落ちることがあるので、どの項目を調整するのかバランスが重要です。
ビジュアルモードはバックテスト時に実際の値動きを見たり、インディケータなどをグラフィカルに表示しながらEAの動きを確認できますが、描画処理の負荷が高く時間がかかってしまいます。
ストラテジーテスターの「ビジュアルモード」のチェックを外して症状が改善するか試してみましょう。
バックテストは最後まで実行できたのに、結果が安定しない症状が発生することがあります。結果が安定しない原因として、スプレッドが広がっている際にバックテストをしていたり、欠損したデータでバックテストを行っていたりすることが考えられます。
ストラテジーテスターのスプレッドを「現在値」のままにしてバックテストを行うと、実行する日によって結果が大きくブレるケースがあるので注意が必要です。
特に土日に実施するバックテストでは、市場が閉じる直前のスプレッドが反映され、通常よりも高い値になる傾向があります。スプレッドの極端な広がりを避けるためには、スプレッドを「5」や「10」などの固定値に設定すると良いでしょう。
遺伝的アルゴリズムを使うことで、最適化のプロセスを効率化できます。しかしパラメータの組み合わせを総当たりで最適化を実行する場合と比べてランダム性があるため、実行する度に異なる結果が表示されることがあります。
したがって、遺伝的アルゴリズムは有効なパラメーターの傾向をつかむために活用することがおすすめです。遺伝的アルゴリズムで広範囲のパラメーターを検証し、パラメーターの傾向がつかめたら、機能を無効にします。そして、一部のパラメーターだけを総当たりでチェックするなど組み合わせて利用しましょう。
MT4にはM1足よりも細かいティックデータを疑似的にランダム生成してテストを行う機能が備わっているものの、データの精度は高くありません。特にスキャルピングを行うEAでは、毎回結果が異なることが珍しくなく、たとえばM1足でバックテストをするとモデリング品質が25%以下にしかなりません。
この問題は、疑似ティックデータではなく、有償ヒストリカルデータを用いてバックテストを行うことで解決できます。
テスト結果に急激な変動があったり、不自然な動きが見られたりする場合はヒストリカルデータの欠損や不整合が原因である可能性があります。
「レポート」タブを開き、M1足以外の時間足でもモデリング品質が90%以上になっていない場合は、データが存在しない期間を含んでバックテストを行っていないか再度確認しましょう。
また一度ヒストリカルデータを削除して、再ダウンロードすれば解決できる場合もあります。
スプレッドを低く設定しすぎたり、口座通貨が揃っていなかったりすることで、バックテストの結果が良すぎたり、または悪すぎたりするケースがあります。
スプレッドが極端に低いなど不自然な値を設定すると、バックテスト結果が極端に良くなります。実際に提示されない低いスプレッドでバックテストを行っても意味はないので、取引環境に近い現実的なスプレッドを指定しましょう。
バックテストと口座の通貨が異なると、テスト結果が大きくずれてしまいます。
たとえば、円建て口座で1ロット当たり720円の手数料が発生するケースで考えてみましょう。以下は有料のヒストリカルデータを導入した際に見ることができる情報です。
手数料のベースにある「720」という数字は、1ロット当たり720円の手数料が発生するという意味です。円建て口座にもかかわらずバックテストの通貨をUSDにした場合、手数料がドル単位となってしまいます。つまり、手数料が720ドルと認識されるので、損益が大きく悪化します。
口座がドル建てか円建てかを確認し、バックテストの初期証拠金の通貨単位も同じものを利用しましょう。
バックテストの結果と実運用でのトレード成績が異なるケースももちろんあります。
バックテストでわかる情報は、あくまで過去の相場でのパフォーマンスです。バックテストの結果は良かったものの、実運用を始めるとパフォーマンスが悪くなることは珍しくありません。
バックテストの結果を信頼して最初から大きなロット数で運用するのではなく「デモ口座で運用する」「小ロット数でリアル口座で運用する」「徐々にロット数を増やしていく」など、段階的に運用していきましょう。
MT4でバックテストをする際に、上記で解説した以外の症状が発生することもあります。その場合は、基本的にエラーメッセージをチェックします。
実運用ではMT4のターミナルウィンドウにある「エキスパート」や「操作履歴」タブ、バックテストではテスターウィンドウにある「操作履歴」タブを確認してください。
そこに表示されているエラーメッセージをGoogleやYahoo!などで検索すると、解決策が見つかるはずです。
操作方法に慣れるまではストラテジーテスターが上手く動作しないことが良くありますが、原因を冷静に分析し、一つずつ対策を講じていけば解決できるでしょう。
初心者のうちは慣れないことも多いですが、トラブルを一つ一つ乗り越えることで、MT4の理解が深まり、精度の高いバックテストができるようになります。
最終的には、この経験の積み重ねが実運用での成功につながります。困ったときは本記事を参考に、解決への一歩を踏み出してみてください!
作成日
:2025.05.13
最終更新
:2025.05.13
短期が中心のトレーダーや中長期が中心のトレーダー、元プロップトレーダー、インジケーターやEAの自作を行うエンジニアなどが在籍。資金を溶かした失敗や専業トレーダーに転身した経験など、実体験も踏まえてコンテンツを制作している。
ご覧いただきありがとうございます。Myforexでは、記事に関するご意見・ご感想をお待ちしています。
また、海外FX・仮想通貨の経験が豊富なライター様も随時募集しております。
お問い合わせ先 [email protected]
MT4初心者必見!FX自動売買EAバックテストのよくあるトラブルと対策集
2025.05.13 19:00
Exnessの海外入出金で銀行口座が凍結されるケースが発生
2025.05.09 19:00
XS.comがスワップフリー銘柄を追加!エネルギーを低コストで取引可能に
2025.05.08 19:00
テスタ氏の楽天証券口座に乗っ取り被害が発生!SNSでは不安の声が多数
2025.05.02 19:00
GEMFOREX関係者がSAMURAI FXを設立?AxonMarketsとの共通点とは
2025.05.01 19:00
メタマスクからビットフライヤーに送金してみた!送金手数料や反映時間は?
2025.05.01 19:00
免責事項:Disclaimer
当サイトの、各コンテンツに掲載の内容は、情報の提供のみを目的としており、投資に関する何らかの勧誘を意図するものではありません。
これらの情報は、当社が独自に収集し、可能な限り正確な情報を元に配信しておりますが、その内容および情報の正確性、完全性または適時性について、当社は保証を行うものでも責任を持つものでもありません。投資にあたっての最終判断は、お客様ご自身でなさるようお願いいたします。
本コンテンツは、当社が独自に制作し当サイトに掲載しているものであり、掲載内容の一部または、全部の無断転用は禁止しております。掲載記事を二次利用する場合は、必ず当社までご連絡ください。
Myforexでは、このウェブサイトの機能向上とお客様の利便性を高めるためにクッキー使用しています。本ウェブサイトでは、当社だけではなく、お客様のご利用状況を追跡する事を目的とした第三者(広告主・ログ解析業者等)によるクッキーも含まれる可能性があります。 クッキーポリシー