独自開発EAのリアルトレード公開中 詳しくはこちら

[MT4]バックテストの理解と実践。自動売買(EA)を正しく評価するための基本を解説

この記事で解説すること
  • バックテストのメカニズム
  • バックテストを活用したEAの評価方法
対象者
  • EA初心者の方
  • バックテストを取った事がない方、経験が少ない方

FXの自動売買ツールであるエキスパートアドバイザー(EA)は、個人の感情に影響されることなくシステマティックに利益を生み出す事ができ、更に時間効率も大幅に向上させることができるため、多くのトレーダーの関心を集めています。

MT4に組み込まれているバックテスト機能は、ソフトウェアの開発や他者が作成したEAを評価する際に活用されています。

バックテスト機能とは

MT4内にある「ストラテジーテスター」を利用した過去チャートテストのこと。

「ctrl+r」で開きます。

strategy-tester

過去の市場データでパフォーマンスがふるわなかったEAは将来も同様に機能しない可能性が高いため、バックテストはEAの開発や使用の際に不可欠な工程です。

目次

バックテストの仕組み

バックテストは、MT4に組み込まれた機能で、EAが過去の市場データ(ヒストリカルデータ)を基に取引を行った場合の成績を検証することができます。

ヒストリカルデータに含まれるもの

各通貨ペアの以下の項目が含まれます。

  • 始値:時間足の開始価格
  • 終値:時間足の終了価格
  • 高値:時間足の最も高い価格
  • 安値:時間足の最も安い価格
  • 取引量(価格変動の回数)

バックテストのプロセスでは、これら5つのデータを使用して、特定のアルゴリズムに従って過去の価格変動を模擬的に再現し、EAの内蔵ロジックに基づいて仮想取引を行い、その結果のパフォーマンスを評価します。

バックテストはなぜ必要か

バックテストは、EAの戦略の有効性を確認するために必須のプロセスです。

ただし、過去のデータに基づく高パフォーマンスが将来的な成功を保証するものではないことを理解することが重要です。

バックテストは過去検証に過ぎず、その成果が将来にも適用可能かどうかは別の問題です。

しかし、バックテストで低パフォーマンスの戦略は、将来的に高い成果を期待することはできません。

バックテストでの成功は、取引戦略の有効性を示す必要条件ではありますが、十分条件ではないのです。

さらに、バックテストを行うもう一つの理由は、EAの取引ルールに基づく最大ドローダウン(最高残高からの最大減少額)や期待値(取引あたりの平均的な利益)など、リアルトレードにおける運用設定を決定するための基本情報を収集することです。

特に、最大ドローダウンの理解は重要で、実際の取引でこの値を超えるドローダウンが発生した場合、EAの運用を続行するか否かの判断基準となります。

また、自分が許容できるドローダウンの範囲を把握することで、取引のサイズ(ロット数)を決定することが可能になります。

バックテストの実施方法

バックテストの準備

STEP

ヒストリカルデータのオプション設定

冒頭で触れた通り、バックテストはヒストリカルデータを用いて行われますので、その準備としてまずヒストリカルデータの導入がスタートラインになります。

最初にMT4で扱うヒストリカルデータの量を最大限に設定することが必要です。

最大バー数の設定
オプション表示方法

MT4メニューバーより
➡︎「ツール」
➡︎「オプション」

オプション設定方法

チャートタブを開く
➡︎「ヒストリー最大バー数」と「チャートの最大バー数」
➡︎可能な限り「9」を入力

STEP

ヒストリカルデータのダウンロード

次のステップは、ヒストリカルデータのダウンロードです。

多くの場合、これはMT4をサポートする海外のFX業者から行います。

ここでは、FXDDという業者からデータをダウンロードするプロセスを説明します。

まず、FXDDの公式ウェブサイトにアクセスします。

FXDDのウェブページにアクセスしたら、サポートタブから「MT4 1分足データ」を選択して下さい。

FXDDの1分足ダウンロード

所望の通貨ペアのヒストリカルデータをPCにダウンロードしてください。

STEP

ヒストリカルデータのインポート(1分足のみ)

ダウンロードしたヒストリカルデータをMT4にインポートするには、以下の手順に従ってください。

ヒストリカルデータの表示方法

MT4メニューバーより
➡︎「ツール」
➡︎「ヒストリーセンター」

これにより、利用可能な通貨ペアのリストが表示される新しいウィンドウが開きます。

このリストから、バックテストに使用したい特定の通貨ペアを選び、次のステップに進んでください。

ヒストリカルデータのインポート方法

リストからバックテストに使用する通貨ペアを見つける
➡︎リストから「1分足」(M1)をダブルクリック
➡︎右側に通貨ペアの1分足データの詳細が表示されます
➡︎「インポート」クリック後、ダイアログボックスを表示
➡︎ダウンロードしたファイルを探して「開く」をクリック
➡︎正しく選択されればインポート開始
➡︎MT4への組み込み完了

これで、ダウンロードしたヒストリカルデータがMT4プラットフォームに正しくインポートされ、バックテストに使用する準備が整いました。

うまくインポートできていない場合は、MT4を再起動するとうまくいく場合があります。

これまでの作業で1分足のチャートがインポートされました。

1分足を使うEAであればこのままテスト可能です。

STEP

各時間足のヒストリカルデータをインポート

他の時間足を使う場合は、この1分足のデータから他の時間足のデータを作成する必要があります。

インストール済みの各時間足の表示方法

MT4メニューバーより
➡︎「ファイル」
➡︎「オフラインチャート」

現在インストールされている通貨ペアと時間足が表示されます。

こちらに表示されている通貨ペアと時間足でしかバックテストできないので注意してください。

異なる時間足のチャートを作成するプロセスを完了させるためには、以下の手順に従います。

各時間足のチャート作成方法

「ナビゲーター」を表示(表示されていない場合「ctrl+n」で表示させる)
➡︎「スクリプト」フォルダを展開
➡︎「Period Converter」スクリプトを選択
➡︎使用したいチャートにドラッグアンドドロップ
➡︎スクリプト設定ウィンドウ表示
➡︎作成したい時間足のチャートに対応する値を入力
※チャートに対応する値は右の表を参考にしてください。
➡︎必要な時間足の値を入力した後、「OK」をクリックして設定を確定

「ナビゲーター」を表示(表示されていない場合「ctrl+n」で表示させる)
➡︎「スクリプト」フォルダを展開
➡︎「Period Converter」スクリプトを選択
➡︎使用したいチャートにドラッグアンドドロップ
➡︎スクリプト設定ウィンドウ表示
➡︎作成したい時間足のチャートに対応する値を入力
※チャートに対応する値は下の表を参考にしてください。
➡︎必要な時間足の値を入力した後、「OK」をクリックして設定を確定

時間足チャートに対応する値
5分足5
15分足15
30分足30
1時間足60
4時間足240
日足1440

これにより、元の1分足データから必要な時間足のチャートが生成され、EAのバックテストに利用する準備が整いました。

バックテスト実施

STEP

バックテストの条件設定

バックテストの条件設定を行います。

インストール済みの各時間足の表示方法

MT4メニューバーより
➡︎「表示」
➡︎「ストラテジーテスター」
※「ctrl+r」でも表示可能

STEP

ストラテジーテスター設定

下図のようなウィンドウが立ち上がります。①から⑦まで設定 していきます。

スクロールできます
番号項目名内容
エキスパートアドバイザテストしたいEAを選択します。
通貨ペアテストを行いたい通貨ペアを選択します。
モデルテストの精度を選択します。
「全ティック」が最も高精度ですが時間がかかります。「コントロールポイント」は中間の精度と時間を要します。「始値のみ」は最も速いですが、精度は低下します。要求されるテスト精度やEAの性質に応じて、これらのオプションから選ぶことが必要です。
期間指定バックテストを行う期間を指定します。
長期間のデータを使用すると信頼性が高まりますが、テスト時間が長くなります。トレード数が2000回未満の場合は、使用可能なヒストリカルデータの全期間を使用することをお勧めします。
時間足EAが特定の時間足で動作するよう設計されている場合、その時間足を設定します。
スプレッドスプレッドは取引コストを意味し、EAのパフォーマンスに影響を与えます。
使用するFX業者や通貨ペアの平均スプレッドを調べ、少し余裕を持たせて設定することをお勧めします(例: 平均スプレッド+0.5 pips)。
エキスパート設定「テスト設定」タブで、初期証拠金、ポジション方向(ロングとショート、または片方のみ)など、さらなる詳細設定を行うことができます。
「パラメータの入力」タブでは、EAのパラメータの設定ができます。
スクロールできます
番号項目名内容
エキスパート
アドバイザ
テストしたいEAを選択します。
通貨ペアテストを行いたい通貨ペアを選択します。
モデルテストの精度を選択します。
「全ティック」が最も高精度ですが時間がかかります。
「コントロールポイント」は中間の精度と時間を要します。
「始値のみ」は最も速いですが、精度は低下します。
要求されるテスト精度やEAの性質に応じて、これらのオプションから選ぶことが必要です。
期間指定バックテストを行う期間を指定します。
長期間のデータを使用すると信頼性が高まりますが、テスト時間が長くなります。
トレード数が2000回未満の場合は、使用可能なヒストリカルデータの全期間を使用することをお勧めします。
時間足EAが特定の時間足で動作するよう設計されている場合、その時間足を設定します。
スプレッドスプレッドは取引コストを意味し、EAのパフォーマンスに影響を与えます。
使用するFX業者や通貨ペアの平均スプレッドを調べ、少し余裕を持たせて設定することをお勧めします。
(例: 平均スプレッド+0.5 pips)
エキスパート
設定
「テスト設定」タブで、初期証拠金、ポジション方向(ロングとショート、または片方のみ)など、さらなる詳細設定を行うことができます。
「パラメータの入力」タブでは、EAのパラメータの設定ができます。

各EAによって異なりますので、EAに付属されている解説をよく確認して設定して下さい。パラメータ設定の画面に直接説明が記載されている場合もあります。

STEP

バックテストの実施と結果の確認方法

設定が完了したら、ストラテジーテスターの画面右下にある「スタート」ボタンをクリックしてバックテストを開始します。

テストが完了すると、進行状況を示すバーが緑色に変わり、バックテストの結果を確認できる新しいタブが表示されます。

これらのタブは

  • 結果
  • グラフ
  • レポート

のセクションに分かれており、それぞれがバックテストの成果を異なる形で示します。

結果タブ

バックテスト中に行われた各トレードの詳細を確認できます。

結果タブ

エントリーとエグジットの価格、トレードの利益や損失、取引日時など、トレードごとの具体的な情報がリスト形式で表示されます。

グラフタブ

バックテスト期間中の口座残高の変動をグラフィカルに表示します。

グラフタブ

このグラフを見ることで、EAのパフォーマンスが時間経過とともにどのように変化していったかを視覚的に把握することができます。

レポートタブ

EAの総合的なパフォーマンス指標がまとめられています。

総利益、総損失、最大ドローダウン、利益率、期待値など、EAのパフォーマンスとリスクを評価するのに役立つさまざまな統計が表示されます。

これらの結果を詳しく分析することで、EAの戦略に優位性があるか、リスク管理が適切かどうかなどを総合的に評価することができます。

バックテスト結果の解析において、特に重要な指標として「純益」と「プロフィットファクター」が挙げられます。また、このレポートタブの中には出てきませんが、「リカバリーファクター(RF)」も重要な指標として取り扱われます。

期待利得も非常に重要ですが、後の章で出てきますので、この章では割愛します。

スクロールできます
項目計算式内容目安
純益総利益−総損失純益はバックテスト期間中にEAが生み出した総損益金額です。
この指標はEAの絶対的な収益性を示し、プラスの値であれば利益が得られていることを意味します。
個人的な基準としては、1ロットあたり年間$10,000の純益を目安にしています。
この値を下回る場合は、取引数が少ないか、期待値が小さく、実際に運用するのは難しい可能性があります。
※ただし、ポートフォリオの一部として多様性を持たせるために使用する場合はこの限りではありません。
プロフィットファクター
(PF)
総利益/総損失総利益を総損失で割った値で、収益性とリスクのバランスを示します。
PF=
この値が1以上であれば、総利益が総損失を上回っていることを意味します。
1.5以上であることが望ましいとされています。
PFが低い場合、利益が出ても損失が大きいため、ロット数を増やすことが難しく、レバレッジを効かせるのが困難になります。
リカバリーファクター
(RF)
純利益/最大ドローダウン純利益を最大ドローダウンで割った値で、投資に対するリスク調整後のリターンを示します。
RF=
この値が高いほど、少ないドローダウンで高い利益を得られていることを意味し、EAの効率性が高いと評価できます。
最大ドローダウンを基にロット数の調整を行う場合、この値が大きいほど、より大きな収益を期待できると言えます。
個人的な目安としては最低5以上は欲しいところです。
ただし、それ以下でも問題はありません。
特にフォワードがバックテストを忠実に再現できているようなEAにおいては10よりも低くなる可能性があります。そういったEAの場合には2以上を目安としましょう。
スクロールできます
項目計算式内容目安
純益総利益−総損失純益はバックテスト期間中に
EAが生み出した総損益金額です。
この指標はEAの絶対的な収益性を示し、
プラスの値であれば
利益が得られていることを意味します。
個人的な基準としては、
1ロットあたり年間
$10,000の純益を目安にしています。
この値を下回る場合は、
取引数が少ないか、期待値が小さく、
実際に運用するのは難しい可能性があります。
※ただし、ポートフォリオの一部として
多様性を持たせるために使用する場合は
この限りではありません。
プロフィット
ファクター
(PF)
総利益/総損失総利益を総損失で割った値で、
収益性とリスクのバランスを示します。
この値が1以上であれば、
総利益が総損失を上回っていることを意味します。
1.5以上であることが望ましいとされています。
PFが低い場合、利益が出ても損失が大きいため、
ロット数を増やすことが難しく、
レバレッジを効かせるのが困難になります。
リカバリーファクター
(RF)
純利益/最大ドローダウン純利益を最大ドローダウンで割った値で、
投資に対するリスク調整後のリターンを示します。
この値が高いほど、少ないドローダウンで
高い利益を得られていることを意味し、
EAの効率性が高いと評価できます。
最大ドローダウンを基にロット数の調整を行う場合、
この値が大きいほど、より大きな収益を期待できると言えます。
個人的な目安としては最低5以上は欲しいところです。
ただし、それ以下でも問題はありません。
特にフォワードがバックテストを忠実に再現できているようなEAにおいては10よりも低くなる可能性があります。そういったEAの場合には2以上を目安としましょう。

これらの指標を総合的に考慮することで、EAのパフォーマンスを多角的に評価し、将来の取引戦略やリスク管理の方針を策定するための有用な情報を得ることができます。

バックテスト結果を理解し活用することで、より安定した収益を目指すトレーディング戦略を構築することが可能になります。

更なる高みを目指すために

バックテストの精度向上させる

バックテストは可能な限り精度を向上させる必要があります。これはリアルトレードで再現性を高めるための行為に他なりません。

バックテストの精度を評価するにはいくつか重要なポイントがありますので、以下でそれらを解説します。

スプレッド設定の適正値

スプレッド設定はバックテストの結果に大きな影響を与えます。

リアルトレードではスプレッドが変動するため、バックテスト時は実際のスプレッドよりも若干大きめに設定することが推奨されます(例: 実際のスプレッド+0.5 pips)。

これにより、リアルトレード時の不確実性を少し織り込んでバックテストする事が可能になります。

モデリング品質の確認

モデリング品質はバックテストの信頼性を示す重要な指標で、レポートタブの一番右上に出てきます。

モデリング品質

90%以上のモデリング品質を目指すことが一般的ですが、チャートの時間足に不整合があると品質が下がる場合があります。

また、「コントロールポイント」や「始値のみ」でテストを行うとモデリング品質はn/aとなります。

「コントロールポイント」や「始値のみ」はローソク足の価格の一部のみを使ってテストする方法です。そのため、これらでテストを行った場合には、モデリング品質が悪すぎてn/a(Not applied:非適用)となってしまうのです。

ただし、コントロールポイントや始値のみでテストしても問題ないEAも存在します。

例えば、ローソク足(バー)の始値のみで取引するようなタイプのEAです。

そういったタイプのEAかどうかは、「結果」タブの取引結果を見ると分かります。

例えば、5分足で動作するEAのエントリーやクローズが5の倍数の分でしか実施されていないような場合にはそれが当てはまります。

「全ティック」でテストを始めて直ぐに停止し、結果タブを見てそれが当てはまっていたら、一度テストを止めて「始値のみ」でテストをやり直すのが良いでしょう。時間を大幅に短縮できます。

モデリング品質を最大限向上させる方法

モデリング品質は、99.9%までの精度を実現する事が可能です。

これを達成するには、Tick Data Suiteなどのサービスを利用してリアルティックデータを取得する方法があります。これにより、市場のティック毎の動きを正確に再現し、バックテストの精度を向上させることができます。

ただし、これを利用するにはそれなりのコストがかかりますので、初心者の方は導入することを躊躇うかもしれません。

FXである程度利益を手にしてから検討しても遅くはないでしょう。

TDSについてはこちらの記事がとても参考になります。

フォワードデータと比較する

バックテストの結果が信頼できるかどうかを確認するためには、フォワードデータ(リアルトレードの取引データ)との比較を実施し、バックテスト結果との差異を確認することが最も重要です。

モデリング品質が低い場合や、バックテストの結果に不確実性がある場合は、特にフォワードデータとの比較を行い、バックテストの妥当性を確認することをお勧めします。

これらのポイントを考慮してバックテストを実施し、結果の分析を行うことで、EAのリアルトレードでのパフォーマンスの信頼性をより正確に評価することができます。

バックテストデータとフォワードデータを比較する場合には、私が開発したツールが非常に簡単で便利なのでお勧めです。

ツールの詳細についてはこちらの記事で紹介しています。

note(ノート)
EAの入れ替えや稼働ストップでもう迷わない!!Newタイプのフォワード検証ツールを開発しました。|ゆうく... はじめに 最近は優秀なEAが何個でも無料で使えるというプラットフォームが増えてきました。 中には50個以上のEAを詰め込んでポートフォリオを組んでいる人もいるようですね...

期待利得の重要性を理解する

期待利得はバックテストの結果を評価する際の非常に重要な指標の一つであり、トレードごとの平均利益を示します。

期待利得が高い戦略は、一貫して利益を生み出す可能性が高いことを意味しますが、
期待利得が低い戦略は、リアルトレードでは利益を上げることが困難になる可能性があります。

最も重要なことは、リアルトレードでは、スプレッド、スワップ、スリッページなどの取引コストが期待利得に影響を与え、バックテストの結果よりも低下させます。

その影響の積み重ねで期待利得が段々下がってきてマイナスに転じると、その戦略は利益を出すどころか、マイナスを積み上げる戦略へと変わってしまうのです。

逆に言うと、バックテストで期待利得が高いEAはリアルトレードでも利益を生む期待度がかなり高まります。(後述する過剰最適化されている場合を除く)

そのため、期待利得は十分な余裕度が必要であり、1トレードあたり5pips以上が望ましいです。

しかしながら、そこまで高い期待利得を持つ戦略はそう多くありません。実際には2.5pips以上の期待利得を持つEAを目指すのが現実的です。

期待利得が低い戦略の場合に気をつけること
  1. バックテストでは、実際よりも厳しいスプレッド条件を設定し、戦略に十分なロバスト性(余裕度)をがあるかをチェックしましょう。
  2. スワップがマイナスの場合は、その影響を考慮しましょう。
    おおよそどれくらい期待利得が下がるかを予測するだけでも結構ですが、取引結果をスプレッドシートに吐き出して計算する方がより正確です。
    なお、TDSではスワップを反映したバックテストができますので、より簡単にスワップ金利の影響を考慮したバックテストが可能です。

過剰最適化に気をつける

過剰最適化とは、特定の過去のデータに適合するようにロジックやパラメータを調整することです。

これをしてしまうと、バックテストでは非常に良いパフォーマンスを示すのに、リアルトレードではうまく機能しないといったことが起こりえるのです。

EA開発者の中には、過剰最適化を利用してバックテストを良く見せて誇大にEAの宣伝を行う人もいるため、過剰最適化を見破ることができるようになれば強力な武器となります。

以下に注意点を記載しますので、参考にしてください。

取引数が多い戦略を選ぶ

取引数が少ないEAは過剰最適化されやすいです。

目安としては2000回以上の取引データを確認したいところです。

ただし、複数ポジションを持つEAや複数の戦略を詰め込んだEAは取引データが多くなるので、その場合には更に多くの取引データを確認する必要があります。

アウト・オブ・サンプル検証を行う

EAの性能を評価する際には、最適化に使用したデータセットとは別のデータセット(アウト・オブ・サンプル)でテストを行うことが効果てきです。

これにより、戦略が過去の特定のデータに過剰に適合しているかどうかを確認できます。

EAの開発が完了した時期を調べ、それ以降のバックテストのパフォーマンスを確認してみましょう。右図のような資産曲線になっていたら要注意です。

EAの開発が完了した時期を調べ、それ以降のバックテストのパフォーマンスを確認してみましょう。下図のような資産曲線になっていたら要注意です。

アウトオブサンプルの確認
特定期間のみ取引が極端に減っていなっていないかを確認する

バックテストの成績を良く見せようと、成績の悪い特定の期間だけフィルターを入れたり、ロジックやパラメータを変更している場合があります。

資産曲線のグラフからは分からないので、取引結果をエクセルなどのスプレッドシートに貼り付け、極端に取引数が減っている期間がないか確認してみましょう。

終わりに

この記事を通じて、バックテストの重要性と実施方法についての理解を深めていただけたかと思います。

バックテストは、トレーディング戦略の有効性を確認する上で不可欠なツールですが、成功を保証するものではないことも重要な視点です。

この記事で紹介した内容はバックテストの初歩という位置付けです。

バックテストは非常に奥が深いので、スキルを高め続ける事を怠らず、より正確なバックテストの実施、及び評価ができるようになって下さい。

そうする事で、あなたのトレードライフはきっと快適なものとなるでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
目次