MT5のストラテジーテスターのモデルについて

相変わらず、MT5のブレイクする兆しは感じられないGWです。皆さん、お元気ですか?

今回の記事は、そんななかでも、MT5のバックテストについてです。

まず、MT4のストラテジーテスターでは、モデルとして「始値のみ」、「コントロールポイント」、「全ティック」の3つが用意されています。

確定したバーの値のみを利用するEAでは「始値のみ」、最新のバーの値を利用するEAでは「全ティック」を選ぶのが普通です。「コントロールポイント」は、一つ下のタイムフレームまで使うモデルですが、なんか中途半端な感じで、個人的にはあまり使っていません。

一方、MT5では、ストラテジーテスターのモデルは、「始値のみ」、「1分足OHLC」、「全ティック」、「リアルティック」の4つが用意されています。もう一つ「数値計算」というのがありますが、これはバックテスト用のモデルではありません。

これらのモデルの詳細については、メタクォーツ社の以下の記事に詳しく説明されていますので、そちらをご覧ください。

メタトレーダー5における検証の原則
実際ティックでの取引ストラテジーのテスト

ここで、「始値のみ」と「全ティック」はMT4と同じなので、MT4と同じように考えればよいでしょう。「リアルティック」はMT4にはなかったもので、実際のティックの履歴を使い、テストの精度も高いのですが、ティックの履歴はそんなに長く保存されるものではないので、テストする期間が長くなると品質が下がるという問題があります。

そこで、残った「1分足OHLC」はどうか?というのが、今回のテーマです。

「1分足OHLC」は、その名の通り、1分足の4本値を使うモデルです。参照するデータが少ない分、「全ティック」に比べると何十分の1かの時間でテストできます。最適化など何度もテストを繰り返す場合、テスト時間は圧倒的に短くなるというメリットがあります。ただ問題なのはテスト精度です。

「1分足OHLC」のモデルでは、価格がO-L-H-C、あるいはO-H-L-Cと4段階でしか変化しないので、LとかHの値で約定することがあります。特に逆張りのEAの場合、実際の約定価格より有利な価格で約定することになり、当然ながらテストの結果も全ティックよりよくなります。

ただし、その結果の違いは、EAの売買ロジックに大きく依存します。

例えば、同じEAを「1分足OHLC」と「全ティック」のモデルでバックテストしたときに、取引回数が大きく違う場合、「1分足OHLC」はあまり参考になりません。1分間に何度もトレードをするEAなので、「全ティック」、あるいは「リアルティック」を使うべきでしょう。

もし「1分足OHLC」と「全ティック」で取引回数に大きな違いがない場合、「1分足OHLC」の結果から「全ティック」の結果を推測できる可能性があります。

ここに、とあるEAがあり、「1分足OHLC」と「全ティック」のテスト結果が次のようになったとします。

  • 「1分足OHLC」の結果
  • 「全ティック」の結果

これを見ると、総損益は「1分足OHLC」が13734ドルに対して、「全ティック」は6437ドルと半分以下になっています。やはり、「1分足OHLC」では、実際より有利な価格で取引されているようです。ただし、取引回数は475回と478回で大差ありません。損益の減った分が取引回数に比例していれば、「1分足OHLC」の結果から「全ティック」の結果が推測できるかもしれません。

このEAは、EUR/USDを1取引あたり1ロットで売買させています。(13734-6437)/475=15.36より、平均すると、1取引につき15.36ドルほど損益が多く計算されていることになります。pipsで表すと、1.536pipsです。

ただ、この値はEAの売買ロジックや業者にも依存します。ここでは詳細なデータは省略しますが、同じEAで試したところ、テスト期間によっては、1.5pipsから2.0pipsの範囲で変化するようでした。

そこで、1取引あたり、2.0pipsほど損益を減らすようバックテストの総損益を補正してみます。そのために、テストしたいEAのプログラム中に、次のようなOnTester()という関数を作っておきます。

これは、総損益から取引数×ロット数×20を引いて補正するものです。この結果は、バックテスト後の「OnTester結果」のところに表示されます。


これを見ると、4233.64となっています。補正するにしても、1.5pipsから2.0pipsと幅があるので、当然ながらある程度の誤差はやむを得ません。ただ、そのEAのだいたいの良し悪しが短時間で評価できるのであれば、まあ使い道はあるのではないかと思います。

皆さん、よいGWを。



コメントは受け付けていません