MT5のバックテスト・最適化は、MT4とは比べ物にならないほどスピードも速く、分析結果も多彩なので、非常に使いやすいです。
この記事では、MT4のバックテストは経験がある人向けに、MT5のバックテスト・最適化について要点を絞って紹介します。
なお、MT5には各ブローカーのヒストリカルデータが蓄積されていますが、直近のものだけの場合もありますので、正確なデータを利用するには、MT4と同様に外部データを入力する必要があります。
MT5で選択できるメニュー
ストラテジーテスターを開くと、まず最初に「概要」タブが表示されます。この概要タブに、「単一」や「最適化を完了」などのメニューアイコンが表示されます。

実は、このメニューアイコンは押しても押さなくても構いません。バックテスト・最適化にかかわる操作は、「概要」タブの隣の「設定」タブから設定が行えるからです。
メニューアイコンの機能は、単に「設定」タブの初期設定を変更するだけです。例えば「最適化を完了」を押すと、最適化のデフォルト設定が適用された状態で隣の「設定」タブに移動するという意味になります。
メニューアイコンの日本語訳がめちゃくちゃですが、「単一」を押せば通常のバックテストのデフォルト設定、「最適化を完了」を押せば最適化のデフォルト設定になります。両者の違いは、「設定」タブで一番最後の「オプティマイズ」の項目が設定されているかどうかだけです。

メニューアイコンの意味は下記の通りです。
単一 | 通常のバックテスト |
---|---|
インディケータ | インジのバックテスト |
可視化 | ビジュアルモードを使用 |
ストレスと渋滞 | 約定の遅延を設定 |
最適化を完了 | 最適化の完全アルゴリズムを使用 |
遺伝的最適化 | 最適化の遺伝的アルゴリズムを使用 |
フォワード最適化 | 最適化のフォワード機能を利用 |
ここからは、MT5特有の機能である、完全アルゴリズム、遺伝的アルゴリズム、フォワード機能について解説します。
遺伝的アルゴリズム・フォワード機能とは?
MT5で追加された遺伝的アルゴリズムとは、最適化で検証するパラメータの組み合わせを絞って、最適化にかかる時間を短縮する機能です。一方フォワード機能とは、バックテスト期間を前半と後半の2つに分けて検証する機能です。どちらもMT5で新しく導入されました。
遺伝的アルゴリズム
例えば最適化でパラメータの組み合わせが1,000通りあったとすると、完全アルゴリズムでは時間をかけて1,000通り全部やるしかないのに対して、遺伝的最適化では、もっと少ない数の組み合わせのみ検証します。
組み合わせの数を絞っているにもかかわらず、1,000通りすべてやった場合と似た結果を得られるアルゴリズムという位置づけになります。ただし、もちろん最もいい結果を見逃してしまう可能性はありますので、膨大になりすぎない数であれば完全アルゴリズムを使った方が正確な結果が得られることもあります。
ちなみに、パラメータの組み合わせが少ない数だと、遺伝的アルゴリズムを選んでも実際はすべての組み合わせをチェックする完全アルゴリズムが適用されるようです。
フォワード機能
フォワード機能は、バックテスト期間を1/2、1/3、1/4などの割合で前半と後半に分割して、それぞれの成績を比較できる機能です。
通常のバックテスト、完全アルゴリズム、遺伝的アルゴリズムのどれでも使うことができますが、一番フォワード機能を使うメリットがあるのは遺伝的アルゴリズムです。
完全アルゴリズムの場合、前半の期間の成績上位の組み合わせに対して、後半の期間の成績を算出します。完全アルゴリズムは、元々パラメータの組み合わせすべてのバックテストを行うものなので、前半・後半に分けたとしても、単に普通にバックテストした結果が分割で表示されるだけです。
一方遺伝的アルゴリズムの場合、最適化を行う対象期間が変わると結果が変わってくるため、前半で最適化をかけ、後半は最適化がかかっていない結果が表示されることになります。このため、フォワード結果を見ると、最適化をかけたパラメータをリアル運用するとどうなるかの参考にすることができます。
複雑な基準の最大値とは?
最適化結果の一覧が表示されたら、それを自分の好きな基準に従って並び替えることができます。並び替え基準は、下記の8通りで、おおむね予想がつくものばかりですが、「複雑な基準の最大値」だけよくわかりませんね。

・残高最大
・最大利益率(最大プロフィットファクター)
・最大予想ペイオフ(最大期待利得)
・最小ドローダウン
・最大回復係数(リカバリーファクター)
・最大シャープレシオ
・カスタム最大
・複雑な基準の最大値
この「複雑な基準の最大値」は、メタクオーツの説明によれば、下記の項目を順に評価していっているそうです。
①取引数
②ドローダウン
③リカバリーファクター
④期待利得
⑤最大シャープレシオ
ちなみに、「複雑な基準の最大値」のほかにも、もう一つわかりにくい「カスタム最大」というものがありますが、これは、MT5のバックテスト時に使用される「OnTester()関数」をソースコードに入れてカスタム基準を作成するものです。MQL5言語がわかる人は、カスタム基準を作成できます。
以前の最適化結果が自動で保存される
MT5で便利なのは、以前の最適化結果が自動で保存され、それを呼び出すことができる点です。
以前の最適化結果は、「概要」タブの「前の最適化結果を確認」というメニューから確認できます。

複数銘柄のバックテストが可能
MT5では「複数銘柄」「複数時間足」でバックテストができると言われていますが、EAのソースコードで指定した場合にできるという意味であり、ストラテジーテスター側でそのような操作ができるわけではありません。
この点については別の記事でまとめています。

バックテストのデータは正確?
結論から言うと正確ではないです。
MT5に別途データを入れていない場合にデフォルトで使われるヒストリカルデータは、上部の「表示」から「銘柄」をクリックすると確認することができますので、ユーロドルで確認してみましょう。

「銘柄」のウインドウが開いたら、「チャートバー」タブを選択して、①銘柄名、②時間足、③期間を選択して「情報呼出」をクリックします。1分足など短い足で長期のヒストリカルデータを呼び出そうとすると処理時間が長くなるため、簡単に比較したいだけなら日足がおすすめです。

Exness(エクスネス)のゼロ口座なので、直近のユーロドルのスプレッドはゼロです。
しかし、スクロールして2010年のスプレッドを出すと、大体8ポイント(0.8pips)程度で推移しています。全然スプレッドが違いますね。

これは、昔は本当にスプレッドが小さかったか、または、まだブローカー自体が営業を始めていなかった場合などの理由でデータがない場合に他社データを入れているか、どちらかの理由で実態とはスプレッドが異なっています。
スプレッドが実態と違うということは、中のデータに抜け・漏れがある可能性もありますし、正確なバックテストをしたい人は、MT4と同様に、別途データを入れた方がいいでしょう。
最適化の並列処理が可能
MT5では、最適化を行う際、PCのコアごとの並列処理が可能になりました。例えばパラメータの組み合わせが100通りあった場合で、自分のPCが10コアあったとすると、1コア1個のパラメータのバックテストを割り当てて、10個ずつ処理していきます。
そのため、「オプティマイズ結果」タブには、一定の間隔ごとに10個のバックテスト結果が追加されていきます。
自分のPC内でも最適化処理を分散できるのですが、それに加えて、自分の持つ別のPCやVPSで最適化を分散する「Local Network Farm」や、ネットワーク経由でお金を払って他人のPCスペックを借りられる「MQL5クラウドネットワーク」の機能が利用できます。
「Local Network Farm」のやり方については、こちらの記事にまとめました。最適化を実行している最中も、自分が操作しているPCが重くならないのでとても便利です。

便利な機能がたくさん
MT4からMT5になったことで、バックテスト・最適化機能は相当進化したと思われます。そろそろMT6が出るかもなどという人もあるんですが、MT5でも十分な機能があるので、しばらくそれはないのではないかと予想しています。
MT4からMT5に変わったことで、操作方法やプログラミング言語が勉強しなおしになってしまったため、今からMT5に慣れるのに消極的な人もいるかもしれませんが、いつになるかわからないMT6を待つより、すぐMT5に移行してしまうのがおすすめです。