はじめに
MT4でEAのバックテストをしていると、昨日と今日でプロフィットファクターが変わってしまったという事はありませんか?
ソースコードを修正したわけでもない・期間指定等のテスト内容も変えていないのに急にバックテスト結果が変わってしまう事があります。EAを確認している側としては、とても違和感があり不安になりますよね。
今回はこの内容について少し触れて解説していきます。
バックテストの結果が変わる原因は?
バックテストの結果が変わってしまう主な原因としては、3つあります。
- スワップ情報の変化
- テスト内容の変化
- バックテストデータの破損
スワップ情報の変化
何も変えてないのにバックテストの結果が変わる大概の理由はこれです。
バックテストって実はスワップも計算されているんです。
以下の画像を見て頂くとスワップが反映されている事がわかります。
この画像は日付が変更される(スワップが適用される)直前にショートでエントリーして、日付が変更された30分後ぐらいに決済しています。ちゃんとプラス収益のところで決済しているはずですが損益の箇所はマイナスになっていますよね。これは、日付をまたいだことによりマイナススワップが適用されているからなんです。
このようにバックテスト中にもスワップが適用されるんですが、ヒストリカルデータは各々の日(2023年12月1日等)のスワップ情報を持っていません。ではどこからスワップ情報を持ってくるか?というと、バックテストした日のスワップ情報を使います。雑っ!!例えば今日はスワップ3倍デー!という時にバックテストを行うと何も変えてないのにバックテストの結果が大きく変わったりします。
バックテスト時のスワップを確認したい場合は、気配値表示を出して、バックテストする通貨の所を右クリック→『仕様』をクリックします。
すると、通貨の取引条件画面が表示されるのでスワップの箇所で確認する事ができます。
この値はブローカーによっても異なるので、同じヒストリカルデータでもブローカーが違うMT4を使うと異なったバックテスト結果になってきます。
スワップ3倍デー等はこの数値が-200ぐらい(全然3倍じゃない)になっている事もあるので、ここのスワップポイントを確認しバックテスト結果の乖離を防いでいきましょう。
もちろん日またぎしないEAであればスワップは考慮しなくていいですよ。
テスト内容の変化
テスト内容の変化についてはよくある原因ではないかと思います。
ここの内容が変わってしまった場合です。スプレッドが現在値になっている場合や、終了日を変更してしまった場合等によく起こります。スプレッドは基本的に自分で決めた数値(10等)を選択しておきましょう。
また、パラメータ設定の内容がリコンパイル時等に元に戻ってしまう事もあるのでパラメータ設定も確認しましょう。
バックテストデータの破損
稀にあるのがバックテストデータの破損です。どのタイミングでなるのかはわかりませんがバックテストデータが破損している(特定日のデータが抜け落ちている)事があります。原因を特定するのに時間がかかります。
この場合、前述した2つの『スワップ情報の変化』『テスト内容の変化』を確認してもバックテストデータの結果が変わってしまう場合は、MT4やPCの再起動したり、最終的にバックテストデータを再度取り直しましょう。
さいごに
急にバックテストの結果が変わってしまう原因は以上になります。
上記3項目を確認する事でバックテスト結果が変になる事はほぼなくなると思います。
スワップが厄介で中々同じバックテスト結果になりませんが、土日にバックテストするとスワップポイントが0になっているブローカー(アルパリ等)もあるのでスワップポイントも確認しながらバックテストを行ってみて下さい。
※ EAのサンプルソースを一覧表にまとめました
※オンラインレッスンやってます
コメント