バックテスト基礎
マルチタイムフレーム分析(MTF)をEAに実装した時にバックテストが重くなる問題
公開 2026.06.17 最終確認 2026.06.17 Backtest
「1時間足で大きなトレンドを確認し、5分足でタイミングを計ってエントリーする」といったマルチタイムフレーム(MTF)分析をEAに組み込むと、優位性(勝率)は劇的に向上する傾向がありますが、MQL5でのプログラミング(データ取得)の書き方によっては、バックテストの処理速度が絶望的に重く(遅く)なります。 これを回避するためには、毎ティック上位足のインジケーター
PF、勝率、最大DD、取引回数は単独では判断しません。期間、条件、崩れ方とセットで読みます。
backtest
マルチタイムフレーム分析(MTF)をEAに実装した時にバックテストが重くなる問題
結論
「1時間足で大きなトレンドを確認し、5分足でタイミングを計ってエントリーする」といったマルチタイムフレーム(MTF)分析をEAに組み込むと、優位性(勝率)は劇的に向上する傾向がありますが、MQL5でのプログラミング(データ取得)の書き方によっては、バックテストの処理速度が絶望的に重く(遅く)なります。 これを回避するためには、毎ティック上位足のインジケーターを計算・再取得する「無駄なループ処理」を避け、「上位足のローソク足が確定したタイミングでのみデータを取得する」効率的なコーディングが不可欠です。
なぜEA運用で重要か
システムトレードにおいて、上位足の環境認識(MTF分析)は「ダマシ」を回避するためののフィルターです。 しかし、EA開発の過程で「テストが重すぎる」という壁にぶつかり、最適化(パラメータ探索)に数週間かかるようになると、開発サイクルが回らずに挫折してしまいます。実用的なEAを作るには、ロジックの優秀さだけでなく、「計算コスト(処理の軽さ)」の最適化というプログラマー的な視点が求められます。
仕組み・条件
なぜMTFのEAは重くなるのか:
MT5の「すべてのティック」モードでバックテストを行うと、1本のローソク足の中で数十回〜数百回、EAの OnTick() 関数が呼び出されます。
もしその OnTick() の中に、「現在の1時間足の移動平均線の値を取得する(iMA等)」という処理が書かれていると、EAは毎ティック、何の意味もなく1時間足のデータを再計算し、メモリとCPUを無駄に消費します。1時間足の値など、1時間に1回しか確定しないにもかかわらずです。
バックテストやリアル運用で壊れるポイント
- メモリリークとインジケーターハンドルの解放忘れ: MTFを実装する際、カスタムインジケーター(
iCustom)のハンドルをOnTick()の中で毎回生成(作成)してしまう初心者のコードがよく見られます。これをやるとバックテスト中にメモリが指数関数的に食い潰され、数十分後にMT5がクラッシュします(ハンドル生成は必ずOnInit()で1回だけ行うのが鉄則です)。 - リアルタイム性のズレ(未来のデータ参照): 開発者が意図せず「現在形成中の1時間足(未確定)」のデータをシグナルにしてしまうと、バックテスト上では都合よくエントリーしてしまいますが、リアル稼働では1時間足の形が刻々と変わる(リペイントする)ため、結果が全く一致しなくなります。
どう確認するか
MTFを採用したEAのバックテストを回す際、タスクマネージャーを開いてCPU・メモリの使用状況を確認してください。また、MT5の「ジャーナル」タブにエラーが大量に吐き出されていないかチェックします。
もし速度が遅すぎると感じたら、コード内のデータ取得関数(CopyBuffer等)が「毎ティック」実行されていないか、条件分岐(if(isNewBar)等)で適切に制限されているかを見直す必要があります。
自分の検証スタンス
私はMTFのEAを開発・検証する際、計算負荷を極限まで下げるため、上位足のインジケーター値を直接取得するのではなく、「下位足のデータだけで疑似的に上位足を計算する手法」を使うことがあります。(例:5分足のチャート上で、1時間足(12倍の期間)の移動平均線を、5分足のSMA期間を12倍にして疑似的に描画させるなど)。 プログラミングのアプローチを変えるだけで、同じロジックでもテスト時間が1/10に短縮されることはよくあります。
関連して読む
- 最大連敗数からロットを決める考え方
- MT5バックテストで手数料を入れ忘れるとPFが盛れる理由
- スプレッド固定バックテストがリアルで崩れる理由
- MT5の「すべてのティック」バックテストが重すぎる時の対処法
- VPSのCPUコア数とMT5バックテスト速度の関係
PF、勝率、最大DD、取引回数は単独では判断しません。期間、条件、崩れ方とセットで読みます。
参照した公式情報
- MQL5 documentation (2026.06.17 確認)
免責
本記事は個人の検証メモであり、投資助言ではありません。バックテスト結果は将来の成績を保証しません。海外FXや自動売買には、法規制・レバレッジ・スプレッド拡大・約定遅延・スリッページなどのリスクがあります。条件は変わるため、最新情報は各公式ページで確認してください。