MT4のバックテストで意外と知らない話
はじめに
皆さんバックテストは行っていますか?これをせずしてFXを行っている方はいませんよね?もししていないのであれば、ギャンブルより分が悪い事をしていると思われます。
まずバックテストの意味をおさらいしましょう。ChatGPT先生どうぞ❕
バックテストとは
バックテストは、特定の投資戦略が過去の市場状況でどのように機能したかを試す手法です。FX(外国為替取引)のバックテストは、過去の為替レートデータに基づいて特定の取引戦略を試すことを意味します。この過程は、投資戦略の有効性を評価し、最適化するために使用されます。
バックテストを行う際の主なステップは以下のとおりです:
戦略定義:これは手動で行われることもありますし、機械学習アルゴリズムを使用して行われることもあります。
データの取得:適切なデータの取得は非常に重要です。データは、FX取引の歴史的な価格、ボリューム、その他の関連情報を含む必要があります。
バックテストの実行:戦略をデータに適用し、何が起こったかを見ます。このステージでは、様々な統計的指標やパフォーマンスメトリクスを用いて戦略の成功または失敗を測定します。
結果の分析:最後に、得られた結果を詳細に分析し、戦略の弱点と強みを理解します。
バックテストは非常に有用なツールである一方で、以下のような限界も理解することが重要です。
過適合:過去のデータに対して最適化しすぎると、未来のデータに対する戦略のパフォーマンスが悪化する可能性があります。これは、過適合(overfitting)と呼ばれます。
前向きバイアス:過去のデータに基づいて未来を予測しようとすると、必ずしも未来の市場状況を正確に反映しない結果になる可能性があります。
市場状況の変化:過去のデータは過去の市場状況を反映していますが、未来の市場状況は異なる場合があります。
これらの限界を理解し、バックテストを適切に設計して実行することで、FXの取引戦略の開発と最適化に役立つ情報を得ることができます。
そして次はそのバックテストでMT4の優良ツールとされているTDSについて説明します。
TDS(Tick Data Suite)は持っていますか?TDS(TokyoDisneySea)ではありませんww※以降TDSと書きます。
FXでEAを回している方であれば一度は聞いた事があるかもしれません。
Tick Data Suiteとは
Tick Data Suite は、実際のティック データを使用して MetaTrader 4 のエキスパート アドバイザーのバックテストを可能にする強力なソフトウェアです。これは 2 つのコンポーネントで構成されます。
Tick Data Manager – 複数のソースから高品質のティック データをダウンロードしたり、既存のデータをインポートしたり、他のプラットフォーム用にデータをエクスポートしたりできます。
MT4 統合モジュール – 手動でデータをエクスポートしたり、ファイルを管理したりする必要がなくなります。Tick Data Suite はすべての操作をバックグラウンドで実行します。
引用Tick Data Suite
バックテストツールとして優秀だけど高価なのがネックとされているツールです!今回はそのTDSでのバックテストで起こったちょっとした出来事の記事になります。
その出来事に気付いた経緯について話していくので結果だけ知りたい方は目次の『結論』まで飛んでください!
TDSが使えない!?
まず初めにTDSを無料期間で初めて導入した時に使用したら以下の結果になり、大変驚きました!
まぁこれはECN口座の問題であっただけですがw
使っていきなりこの結果にはびっくりしましたね。この時は何故出来ないかは追及しませんでした。それよりもバックテストが早くしたくて別のMT4で試して以降は完全に忘れていました。ただのネタですw
1.異変に気付く前の別記事を作成中の流れ
別記事の【各ブローカーのヒストリカルデータの欠損値を検証】の際、順にMT4にヒストリカルデータを入れていきました。
半分のブローカーが1分足のデータなのでヒストリーセンターからデータを入れます。そして『Period_converter_ALL』というスクリプトで他時間足にデータを挿入していく流れで行っていました。
そしてブローカー毎のヒストリカルデータが違えば同じEAでも結果がどの程度違うか、そしてデータに欠損値があればこれだけ違ってくるという検証になると思い記事を書いていました。(まだまだデータがまとまるまで時間がかかりそうです💦)
更にリアルフォワードデータもあるので、実際の各ブローカーのバックテストデータと比較し、どの程度ズレがあるのかないのかも公開して参考になると思い、各ヒストリカルデータを使用したバックテストを取っていきました。
当たり前ですが、スプレッド固定に手数料なし&&スワップフリーなのでめちゃくちゃ良い結果になりました。
2.異変に気付く!?
ここで他ブローカーのバックテストも試した時に、一つだけ他データと違う結果が出てきました。それが下の結果になります。
他のバックテスト結果が①に近いグラフになっていたのですが、②の結果だけ異様な結果に『ここまで違うものなのか…?』と思いました。更に不整合チャートエラーも結構出ていて念の為、一からやり直す事にしました。
この時に他ブローカーのデータを再度入れた時に気付きます。一回目は良かったデータが不整合チャートエラーの数値が異常に増えました!
この時点で一回目とMT4へインポートするヒストリカルデータの入れ方が違う事に気が付きました。
・一回目のデータの入れ方
①DLデータがM1のみの場合はM1のみデータをインポート
または
各時間足のデータがある場合は各時間足にインポート
↓
②period_converter_allで他時間足にデータを入れる
↓
③バックテストを執行
・二回目のデータの入れ方
①バックテスト実行時間足のみのヒストリカルデータをインポート
(全て入れるのはめんどくさかったので…w)
↓
②バックテストを執行
知っている方は『当たり前の事でしょ❕』とおっしゃるであろう失敗を私はココでします。実行足だけ入れても他時間足と価格がズレている為、不整合チャートエラーが大量に出る事になります。
幸いな事に失態にすぐに気付く事が出来て、一回目のデータの入れ方でインポートし直しました。
ここから先は有料記事になりますが、理由もあります。
それは某ブローカーのMT4の問題に気付いてしまったからです。これは無料で大々的に拡散されるべき内容ではなく、知ってほしい方のみ知っていただきたいという思いから有料にさせてもらいました。ご了承下さい。
3.TDSを使用したバックテストの結果が違う!?
ここから先は
この記事が気に入ったらサポートをしてみませんか?