見出し画像

MT4バックテストでのヒストリカルデータの出来高の重要性

MT4でのトレードのバックテストで、ヒストリカルデータの品質がとても大事ということがよく言われています。
この意味合いをよく理解せず、バックテストをやっていました。
しかし、その意味合いを具体的に理解できる事例に遭遇したので共有します。

同じデータを使用し結果が異なる

前日のこちら▼の記事でご紹介したトラブル、「出来高(volume)情報を自分で加工したために出力ファイル(FXT)が巨大になった」に遭遇しました。

このvolume情報を加工しなおしたところ、バックテストの結果がことなる事象に遭遇しました。
以下、volume=4 と volume=40の場合の結果です。

  • volume=40の場合   総取引数=4309、PF=1.23、勝率=94.52%

  • volume=4の場合     総取引数=3969、PF=1.34、勝率=93.85%

この結果では、volume数が高いほど取引数、かつ、勝率が高くなっています。
当初結果にvolumeは関係しないと思い込んでいたので、この結果に少し驚いたのと同時にどちらを採用すべきなのかという疑問がでてきました。

結果が異なる理由

どちらの結果を信用してバックテストの結果とすべきか決めなければなりません。
まず、注文方法は以下のとおりです。

  • 18時00分指定でポジションがなければ、利確・損切り価格を指定して成行注文(利確幅=ストップレベルの下限制限)

  • 追加で、利確幅をさらに低くするための指値決済注文。利確幅 >  指値幅

volumeの違いによる結果の差異について、実際の取引データを比較して確認してみました。
差異のパターンは大きく二種類です。

  • T/P(Take Profit)利確指定による決済 ⇔ 指値による決済(Close)

  • 1分以内の注文数  少ない         ⇔       多い

これはいずれも、ティック数の差異により説明ができます。
その前提として、MT4ストラテジーテスターでは、入力となるヒストリカルデータからvolume情報を考慮したティックデータが作成されていると思われます。
具体的に以下のイメージでディックデータが作られているのではないかと考えます。

入力ヒストリカルデータ(CSV)

2013-01-01,17:00:00,114.453,114.474,114.446,114.474,4

出力ティックデータ(FXT)

2013-01-01,17:00:00,114.453
2013-01-01,17:00:15,114.474
2013-01-01,17:00:30,114.446
2013-01-01,17:00:45,114.474

上記はvolume=4の場合ですが、これがvolume=40の場合には、下の段のティック数が40ほど生成されると考えられます。
そう考えると、先ほどの差異は以下のように説明できます。

  • T/P(Take Profit)利確指定による決済 ⇔ 指値による決済(Close)
    ティック数が少ない場合、一気にT/P価格にジャブするため利確が発動。
    テック数が多い場合、それより小幅の指値決済となる。

  • 1分以内の注文数  少ない         ⇔       多い
    1分内にティック数が多ければその分、注文・利確or指値決済の繰り返し数が増える

以上のように理解するとvolume=4と40の場合でバックテストの結果の差異が説明できます。

この説明から、バックテストでヒストリカルデータを自分で加工するような場合は、volume情報の結果への影響を考慮して設定することが非常に重要です。
本来であれば、本番で想定されるvolumeに合わせるのがベストと思います。
そのような情報がない場合は、自分なりに想定値を置くことになります。
私の場合には控えめに40~50程度がいいかなと考えます。
volume数が低いほどより悪い結果 (=控えめな結果)となるので、実情に合わない高い目の数値は避けたほうがいいと思います。

最後に

この記事はお気に入りいただけましたでしょうか?
内容お役にたちましたらうれしく思います。
また、サポートなど応援いただけましたら幸いです。

いいなと思ったら応援しよう!

なべなべ
記事の内容を有効に活用できた、記事を気に入っていただけたようでしたらチップでサポートいただけますと嬉しいです。 また、こんなことを知りたい、あんなことができないかなど記事にしたいことがございましたら、サポートの有無にかかわらずお知らせくださいませ。