MT4で、EAを正しくバックテストするやり方を詳細に解説します!

2024年1月10日

要点
✅正しいバックテストのためには、Period Converter を使って、きれいなヒストリカルデータを丁寧につなげることが重要です。
✅MT4、ヒストリカルデータは「Alpari RU(ロシア)」を使用します。
✅Alpari は スイスフランショックで倒産しましたが、きれいなヒストリカルデータを提供していました。Alpari RU は、その生き残りです。
✅販売されている高精度のヒストリカルデータは実運用で再現できないので、必要ありません。
✅Every tick のバックテストなら、modelling quality は 90.00 %で十分です。
記事の信頼性担保

【執筆】株式会社トリロジー
【登録】財務省近畿財務局長(金商)第372号
【加入】日本投資顧問業協会 会員番号022-00269
【説明】投資家の皆様への継続支援を通じて金融立国に貢献します。

ヒストリカルデータをダウンロードする前の設定

①Tools ⇒ Options をクリックします。
②Options ウィンドウの中にある「Charts」タブをクリックします。
③Max bars in history、Max bars in chart に「9999999999999」と入力にします。
④この作業により、ヒストリカルデータを上限までダウンロードできます。
⑤「OK」をクリックします。
⑥念のため、Tools ⇒ Options から、「Charts」タブを確認します。
⑦Max bars in history、Max bars in chart には、「2147483647」と入力されておれば OK です。

ヒストリカルデータをダウンロードします。

⑧「Tools」から「History Center」を開きます。
⑨Alpari RU のヒストリカルデータをダウンロードできます。
✅販売されている高精度のヒストリカルデータには「遊び」がなく、過剰最適化につながる可能性があるので注意が必要です。
✅私どもの経験上、高精度のヒストリカルデータを用いた modelling quality が 90.00 % を超えるバックテストは、フォワード成績との乖離が大きくなります(ex. 99.00%、99.90%など)。
⇒ modelling quality は 90.00 % で必要十分です。
⑩ダウンロードしたい通貨ペアを選択します。
⑪1分足を選択し、ダウンロードボタンをクリックします。
⑫1分足以外の時間軸をダウンロードする必要はありません。
⑬「OK」ボタンをクリックすることでダウンロードが始まります。
⑭ダウンロードが完了すれば、「Close」ボタンをクリックし、ウィンドウを閉じます。

(参考)ダウンロードしたヒストリカルデータの信頼性の確認

✅データの連続性を確認します(飛んでいる年月日時がないことをチェック)。
✅ノイズ(スパイクなど)があれば修正する必要があります。
✅ノイズの修正は、4時間足くらいから短時間足へズームインしていくと効率的です。

各時間足のヒストリカルデータを合成します。

⑮「File」から「Open Offline」を開きます。
⑯⑭でダウンロードした通貨ペアの「1分足」を選択し、「Open」をクリックします。
⑰⑭でダウンロードした通貨ペアの1分足のヒストリカルデータから、M1(offline)チャートが描画されます。

1分足から5分足を合成します。

⑱⑭でダウンロードしたヒストリカルデータをつなげ、他の時間足のヒストリカルデータを順番に作っていきます。
⑲「Navigator」ウィンドウにある「PeriodConverter(ピリオドコンバータ)」をダブルクリックします。M1(offline)チャートにドラッグ&ドロップしても同じです。
⑳1 分足から 5 分足を作るために、Valueに「5」と入力します。
㉑「OK」をクリックします。
㉒同様にして、5 分足から 15 分足を、15 分足から 30 分足を、30 分足から 1 時間足を、1 時間足から 4 時間足を、4 時間足から日足を作ります。

5分足から15分足を合成します。

㉓「File」から「Open Offline」を開き、5 分足を選択します。
㉔㉑で合成した 5 分足のヒストリカルデータから、M5(offline)チャートが描画されます。
㉕「Navigator」ウィンドウにある「PeriodConverter(ピリオドコンバータ)」をダブルクリックします。M5(offline)チャートにドラッグ&ドロップしても同じです。
㉓5 分足から 15 分足を作るために、Valueに「3」と入力します。
㉔「OK」をクリックします。

15分足から30分足を合成します。

㉕「File」から「Open Offline」を開き、15分足を選択します。
㉖㉔で合成した 15 分足のヒストリカルデータから、M15(offline)チャートが描画されます。
㉗「Navigator」ウィンドウにある「PeriodConverter(ピリオドコンバータ)」をダブルクリックします。M15(offline)チャートにドラッグ&ドロップしても同じです。
㉘15分足から30分足を作るために、Valueに「2」と入力します。
㉙「OK」をクリックします。

30分足から1時間足を合成します。

㉚「File」から「Open Offline」を開き、3 0分足を選択します。
㉛㉙で合成した 30 分足のヒストリカルデータから、M30(offline)チャートが描画されます。
㉜「Navigator」ウィンドウにある「PeriodConverter(ピリオドコンバータ)」をダブルクリックします。M30(offline)チャートにドラッグ&ドロップしても同じです。
㉝30 分足から 1 時間足を作るために、Valueに「2」と入力します。
㉞「OK」をクリックします。

1時間足から4時間足を合成します。

㉟「File」から「Open Offline」を開き、1時間足を選択します。
㊱㉞で合成した 1 時間足のヒストリカルデータから、H1(offline)チャートが描画されます。
㊲「Navigator」ウィンドウにある「PeriodConverter(ピリオドコンバータ)」をダブルクリックします。H1(offline)チャートにドラッグ&ドロップしても同じです。
㊳1 時間足から 4 時間足を作るために、Valueに「4」と入力します。
㊴「OK」をクリックします。

4時間足から日足を合成します。

㊵「File」から「Open Offline」を開き、4 時間足を選択します。
㊶㊴で合成した 4 時間足のヒストリカルデータから、H4(offline)チャートが描画されます。
㊷「Navigator」ウィンドウにある「PeriodConverter(ピリオドコンバータ)」をダブルクリックします。H4(offline)チャートにドラッグ&ドロップしても同じです。
㊸4 時間足から日足を作るために、Valueに「6」と入力します。
㊹「OK」をクリックします。

合成したヒストリカルデータを確認します。

㊺「File」 から 「Open Data Forder」 をクリックします。
㊻「History」フォルダ内に合成したヒストリカルデータが格納されていることを確認します。
㊼これで、バックテストに使うヒストリカルデータの準備は OK です。

EAを準備します。

㊽テストする EA は、「Tester」フォルダに格納します。
File ⇒ Open Data Forder  ⇒ Tester

バックテストを実行します。

㊾「view」から「Strategy Tester」を開きます。

Strategy tester ウィンドウを確認します。

Symbolバックテストに使用する通貨ペアを選びます。
Modelバックテストの様式を選択します。
Use dateバックテスト期間を指定します。
Period使用する時間足を指定します。
Spreadバックテストに使用するスプレッドを指定します。単位はPoints(pipsではありません)
Experts propertiesEAのパラメータを設定します。
Symbol propertiesテストする通貨ペアの条件を確認できます。
Open Chartバックテスト結果をチャート上に描画します。
Modify expert選択しているEAのソースコードをMetaEditorで開き、修正できます。

Experts properties ウィンドウ

Testing タブ
Initial deposit初期口座残高を指定します。通貨単位をUSD・EUR・GBP・CHF・JPYなどから選択できます。
Positions「Long only」「Short only」「Long & Short」から選択します。
Optimized parameterOptimization(最適化)ツールを使う場合のソート項目を指定します。
Inputs タブ
Loadセットファイルを読み込みます。
Saveパラメータをセットファイルとして保存します。
Optimization タブ

Symbol properties ウィンドウ

テストする通貨ペアの詳細な条件を確認することができます。
スワップポイントなどは、ブローカーにより異なりますので注意が必要です。

Start ボタンをクリックしてバックテストを実行します。

Model説明
Every tick
(全ティック)
利用可能な最小時間枠を使いすべてのティックを生成するという、最も正確な方法です。ただし、時間がかかるので、トレードロジックによっては現実的な選択肢にはなり得ないことも多くあります。最適化過程にも使用しにくいテストモデルです。
Control Points
(コントロールポイント)
一つ下の時間枠を使った大まかな方法です。Control Points は、Every tick よりも遥かに素早くテストできます。一方、結果にはあまり信頼性がないとされています。しかし、Control Point と Every tick で同じ結果が得られる EA は頑健なトレードロジックを搭載している可能性が高く、実運用での成功確率が飛躍的に向上します。
⇒「(参考)Every tick か Control Points か」
Open Price
(始値のみ)
最も早い方法で、バーの始めにしか動かない EA 向けです。EA に対して、バーの始めにしか動かないという制限をかけてしまうという弱点があり、使えるトレードロジックが限られます。
㊿Start ボタンをクリックすると、バックテストが始まります。
✅バーが伸びきればバックテストが完了です。

バックテスト結果を確認します。

Resultsトレード利益を各ポジションごとに確認できます。
GraphEquity curve(資産曲線)を確認できます。
Journalバックテストのトレードログを確認できます。
Reportバックテスト結果の評価項目を確認できます。
Save as Report右クリックから、バックテスト結果を Strategy Tester Report として保存できます。

「Open Chart」 でトレード結果を確認できます。

Open chartバックテストによるトレード状況をチャートに描画できます。
青矢印Buy トレードを表します。
赤矢印Sell トレードを表します。

保存した Strategy Tester Report を確認します。

StrategyTesterReport_Control_points

Strategy Tester Report の正しい見方については、「優秀なEAを見つけるための検証ポイントを大公開!」をご参照ください。

(参考)Every tick か Control Points か

Every tick vs Control points
Every tick の誤解
「バックテストは Every tick でやらないとダメ」と記載する web サイトがありますが、必ずしもそうではありません。例えば、Every tick と Control points で同じ結果が得られる EA は、多少の相場の違いでは結果が左右されないくらいマージンを確保しているシステムとも考えることができます。上図には、Every tick と Control points で同じ成績が出る EA の例をお示しします。

正しくバックテストができれば、正しくバックテストを評価しましょう。

あなたが EA トレードで成功するためには、正しいバックテストに併せて、正しくバックテストを評価する必要があります。

詳しく知りたい方は、「優秀な EA を見つけるための検証ポイントを大公開!」「勝てる EA の探し方と使い方【FX成功の秘訣】」をご参照ください。

EA スコアなら、EA 評価がより簡単にできます。「【EA 採点ツール】「EA スコア」で FX 自動売買を点数化!【業界初】」をご参照ください。

最後にオススメ EA を紹介します。

W2C-Angely
W2C-Tiger
W2C-WhiteTiger
W2C-Ichiro

トリロジーEA販売

EA EAPO