※当サイトはアフィリエイト広告(Amazonアソシエイツ等)を利用しています。
こんにちは。trade-engineer.com 運営者のHです。
MT4で本格的にバックテストや自作インジケーターの検証を行うには、過去のティック・分足データを揃えるところから始まります。MT4ヒストリカルデータの取得は単にダウンロードするだけでは終わらず、インポート手順、精度の確認、各時間足の生成までを一気通貫で整える必要があります。本記事ではFXDDからのデータ取得を起点に、MT4ヒストリカルデータをバックテスト実用レベルに整えるところまでを実装者目線で解説します。
- MT4でバックテストを行う前提となるヒストリカルデータの選定基準
- FXDDからの1分足データダウンロードとMT4インポート手順
- PeriodConverterで1分足から5分足以上の各時間足を生成する方法
- データ精度の検証ポイントとよくあるエラーへの実践的対処
MT4ヒストリカルデータの取得と精度を確認する手順
MT4でモデリング品質の高いバックテストを行うには、まず信頼できる過去データを手元に揃える作業から始まります。MT4ヒストリカルデータのソース選定、ダウンロード手順、MT4へのインポート、データ精度のチェックまでを順番に整理し、そのまま実務で使える形に落とし込みます。
ヒストリカルデータが必要になる場面
MT4のストラテジーテスターは、起動時にMT4が内蔵する分足データを参照しますが、初期状態では数か月〜数年分の限定的なデータしか保持されておらず、しかも欠損や時間軸ずれが発生していることがあります。これではバックテスト結果のサンプル数が確保できず、勝率や期待値の信頼区間が広がりすぎて意思決定に使えません。
具体的に追加データが必要になるのは、複数年にわたるEAの検証、特定の経済指標発表前後の挙動分析、ティック密度に敏感なスキャルピング戦略の検証、複数通貨ペアの同時バックテストなどの場面です。私自身、5分足RSIの逆張りバックテストを取った際に、初期データのままだとサンプル数が350件しか取れず、外部データを差し替えたところ通算サンプル2,800件まで増やせた経験があります。
ヒストリカルデータの整備はバックテストの土台です。データを軽視したまま組んだ戦略は、本番投入後にデータ品質起因の損失で痛い目を見るので、最初に時間をかける価値があります。
もう一点見落としがちなのが、複数の取引業者で同時運用する場合のデータ整合性です。業者ごとにスプレッドや約定時刻のミリ秒単位の差があり、同じ戦略でも業者Aで勝率55%、業者Bで勝率48%とぶれることが珍しくありません。MT4ヒストリカルデータを使った検証段階で、運用予定の業者のスプレッド条件を反映したシミュレーションを必ず一度通しておきましょう。私の場合、業者ごとに別のMT4インスタンスを起動し、それぞれのデータフォルダ配下で独立したヒストリカル環境を持つ運用に落ち着いています。
バックテストのサンプル数はN=1,000を超えると勝率の信頼区間が±3%以内に収まりやすくなります。データ整備はサンプル数確保の前提条件です。
FXDDからデータをダウンロードする手順
無料で入手しやすく、かつMT4にそのままインポートできる形式(HST/CSV)で配布されているのがFXDDのヒストリカルデータです。FXDD公式の1分足データ配布ページにアクセスし、検証したい通貨ペアのZIPファイルをダウンロードします。
配布されているのは1分足(M1)データで、ファイルサイズは通貨ペアによって30MB〜100MB程度になります。ダウンロードしたZIPを解凍するとHST形式のバイナリファイルが取り出せます。HSTはMT4が直接読み込めるネイティブフォーマットなので、CSV変換は不要です。
FXDDのデータは2000年前後から最新近くまで連続しており、長期検証には充分な期間がカバーされています。ただし、FXDDのデータはGMTオフセットがブローカーごとに異なるため、後段の検証で時間ずれが起きないよう、別記事のMT4の時間を日本時間に変換する方法と時間ずれの解消手順と併せて読むと安全です。
なお、FXDDのMT4を実際にインストールしてヒストリカルデータも一括で揃えたい場合は、FXDD版MT4のインストール手順を参考にすると、業者ネイティブのデータが最初から入った状態で運用できます。
ダウンロード時の注意として、FXDDのデータページはタイミングによってメンテナンスや配信停止が発生することがあります。私の経験では年に2〜3回程度、数日間アクセスできない期間があり、その間は他のデータソースで暫定運用する必要が出てきます。よって主要通貨ペア(USDJPY、EURUSD、GBPJPYあたり)だけは普段から手元にバックアップを保存しておき、配信停止時にも検証が止まらない体制を作っておくのが実務的です。ヒストリカルデータの取得は一度きりの作業ではなく、定期的な再取得とアーカイブ運用がセットになります。
MT4ヒストリカルセンターでのインポート操作
ダウンロードしたHSTデータをMT4に取り込むには、メニューの「ツール」→「ヒストリカルセンター」(または Ctrl+H)でヒストリカルセンターを開きます。左側のツリーから対象通貨ペアを展開し、「1 Minute (M1)」をダブルクリックすると右側にレコード一覧が表示されます。
右下の「インポート」ボタンをクリックし、解凍したHSTファイルを「参照」から選択します。区切り文字や桁数の指定欄が出ますが、HSTファイルの場合は自動判別が効くので「ボリュームをスキップする」のチェックだけ確認して「OK」を押せばインポートが進みます。データ件数が多い場合、完了までに30秒〜2分ほどかかります。
インポート後はMT4を一度終了し、再起動します。これをやらないと既存のキャッシュが残ったままになり、ヒストリカルセンターの表示は新しくなっていてもストラテジーテスターやチャート側が古いデータを掴み続けることがあります。再起動後にMT4ヒストリカルデータが反映されているかを必ずチェックしましょう。
確認は、ヒストリカルセンターを再度開き、レコードの先頭日時と末尾日時を確認するのが最速です。インポート前と後で範囲が広がっていれば成功、変わっていなければインポート設定(特に最大バー数)の見直しが必要です。私は確認用のチェックリストとして「インポート前/後の最古日時」「同じく最新日時」「総レコード件数」「該当通貨ペアのファイルサイズ」の4項目をスプレッドシートに記録し、いつどのデータを取り込んだかを管理しています。複数通貨ペアを同時運用する場合、この履歴がトラブルシューティングの起点になります。
「最大バー数」と「ヒストリーの最大バー数」が初期値(オプション→チャートタブ)のままだと、長期データをインポートしても古い側から削除されます。両方を9億などの上限値まで増やしてからインポートしてください。
データ精度を確認するチェック項目
取り込んだMT4ヒストリカルデータは、必ず実装前に精度を検証します。確認すべき項目は次の4点です。第一に欠損期間の有無で、ヒストリカルセンターのレコード一覧をスクロールし、土日以外で連続したギャップがないかを目視で確認します。第二にタイムスタンプのGMTオフセットで、ブローカーごとに+0、+2、+3など異なるため、自分が運用予定の業者と一致しているかを揃えます。
第三にスプレッドカラム(Spread列)の値で、ここが0や異常に小さい値だとシミュレーション時のコストが過小評価されます。第四にティック密度で、ストラテジーテスターの「モデル」を「全ティック」に設定したときの「モデリング品質」が90%以上になっているかを確認します。
これらの基準を満たさないデータは、いくら長期間のレコードが入っていても運用判断に使えません。実際、私はモデリング品質65%のデータでバックテストを取り、勝率72%という派手な数字に踊らされた末、実運用で勝率48%まで落ち込んだ苦い経験があります。データ精度はバックテストの根幹なので、サンプル数の前にまず精度を担保しましょう。
精度確認を自動化したい場合は、自前のMQL4スクリプトでヒストリカルデータの欠損検出を組むのが効率的です。OnStart内でiTime関数を使い、隣接するバーの時間差が想定外(5分足なら300秒、土日除く)になっているレコードを抽出してログ出力するだけのシンプルな構造で十分機能します。私はこの検出スクリプトを通貨ペア追加時に毎回流していますが、これだけで欠損による勝率の見せかけ上昇を防げます。データ精度は感覚ではなく検出ロジックで担保するのがエンジニア流のアプローチです。
Dukascopy・HistData等の代替入手先
FXDD以外にも信頼できるヒストリカルデータの入手先があります。代表的なのはDukascopyのヒストリカルデータエクスポートで、ティックレベルの粒度でダウンロードできるため、スキャルピング系のバックテストには相性が良い選択肢です。CSVまたはバイナリ形式で配布されており、無料アカウント登録のみで取得できます。
もう一つはHistData.comで、こちらはCSV形式の1分足データを通貨ペア別・年別に配布しています。MT4のヒストリカルセンターへインポートする際はCSVのフォーマット指定(区切り文字、桁数、ボリュームの有無)を手動で合わせる必要があるため、FXDDのHSTより一手間多めです。
各データソースは配信元のクオリティが異なるため、同じ通貨ペアでも勝率が数ポイントぶれることがあります。私の場合、メイン検証はFXDD、再現性チェック用にDukascopyの2系統を持っておき、両方で勝率が大きく乖離する戦略は信頼しない、というルールで運用しています。MT4ヒストリカルデータは一つに固執せず、複数ソースで照らし合わせる発想が安全です。
業者直結のデータも見落とせない選択肢です。XM Trading、Axiory、Tradeviewといった主要業者は、自社のMT4インストール時にネイティブのヒストリカルデータを同梱しています。これらは業者ごとのスプレッドや約定条件と整合性が取れている点が強みで、本番口座で運用する戦略の最終確認には業者直結のデータが最適です。検証フェーズはFXDDなど中立データ、実運用前の最終チェックは業者データ、という2段構えに切り分けると、データ品質の偏りによる失敗を減らせます。
MT4ヒストリカルデータから各時間足を生成する手順
1分足のヒストリカルデータをインポートしただけでは、5分足や1時間足のチャート・バックテストはMT4側で正しく動きません。ここからはPeriodConverterスクリプトを使い、1分足を起点に各時間足を生成する具体的な操作と注意点を整理します。MT4ヒストリカルデータを多時間足戦略で使えるようにするための必須工程です。
1分足から各時間足を生成する仕組み
MT4の各時間足チャートは、独立した時間足データではなく、より小さい時間足を内部で集計して描画される構造になっています。たとえば5分足のローソク足1本は、その期間に含まれる5本の1分足ローソク足のOHLCを集計して作られます。したがって1分足データを揃えれば、原理的には全時間足が再構築可能です。
ただし、MT4は起動時に自動的にこの再集計を行いません。「オフラインチャート」という仕組みを使い、PeriodConverterスクリプトを実行することで、明示的に1分足から各時間足のオフラインデータを生成します。
この方法のメリットは、業者依存のずれや欠損を回避できる点です。各時間足を業者から個別にダウンロードした場合、5分足と15分足でデータ期間が異なる、あるいは同一時間のローソク足のOHLCがずれているといった問題が発生しがちですが、1分足から自前で集計すれば全時間足の整合性が保証されます。
もう一つの利点はストラテジーテスター上での挙動です。MT4のテスターは「全ティック」モードで5分足を検証する際、1分足の各バーOHLCを使って内部的にティックを近似します。つまり1分足データの品質がそのまま5分足以上のバックテスト精度を決めるという構造です。業者経由で個別に取得した5分足データだけ揃えても、内部の1分足データが古いままだとモデリング品質は上がりません。「1分足を整える=全時間足の精度を整える」という発想で運用すると、検証結果のブレが大幅に減ります。
PeriodConverterはMT4の「ファイル」→「データフォルダを開く」→「MQL4/Scripts」配下にデフォルトで配置されています。標準スクリプトなので追加インストールは不要です。
PeriodConverterスクリプトの使い方
PeriodConverterを使うには、まず変換元の1分足チャートを開く必要があります。MT4のメニュー「ファイル」→「オフラインチャート」を選び、ヒストリカルセンターでインポートした通貨ペアのM1を選択して「開く」をクリックします。複数のレコードが表示されることがあるので、通貨ペア名の末尾が「M1」になっているものを必ず選んでください。
1分足のオフラインチャートが開いたら、左側ナビゲーターの「スクリプト」セクションから「PeriodConverter」をダブルクリックして起動します。表示されるダイアログの「パラメーターの入力」タブで、変換先の時間足を分単位で指定します。5分足なら「5」、15分足なら「15」、1時間足なら「60」、4時間足なら「240」、日足なら「1440」です。
「OK」を押すと変換が即時に走り、対応するオフラインチャートが新規に生成されます。生成されたチャートはMT4再起動後も保持され、ストラテジーテスターからも参照可能になります。一つの時間足を作るだけならこれで完了です。
生成されたオフラインチャートを開くには、再度「ファイル」→「オフラインチャート」を選び、変換後の通貨ペア名(例:USDJPY M5)を選択します。通常のオンラインチャートとは別管理になっており、リアルタイム更新は行われない点に注意してください。バックテスト用途であれば更新不要なので問題ありませんが、リアルタイム検証を行いたい場合は別途FXTサーバ接続やデモ口座のオンラインチャートと併用する判断になります。PeriodConverterは「過去データを整える専用ツール」と割り切るのが運用上シンプルです。
period_converter Allで全時間足を一括生成
5分足から日足まで一つずつPeriodConverterを実行するのは現実的ではありません。私は通貨ペアごとに5、15、30、60、240、1440の6回を毎回打つのが面倒で、コミュニティ配布の「period_converter All」スクリプトを使っています。これは1分足のオフラインチャート上で1回実行すれば、すべての主要時間足を一括生成してくれる改良版です。
導入はMQL4コミュニティのフォーラムから.mq4ファイルをダウンロードし、MT4のデータフォルダ配下の「MQL4/Scripts」に配置するだけです。配置後、ナビゲーターを右クリックして「更新」を選ぶか、MT4を再起動するとスクリプト一覧に追加されます。あとは通常のPeriodConverterと同様に1分足チャート上でダブルクリックして実行します。
1回の実行で全時間足分のデータ集計が走るため、通貨ペアによっては処理に数分かかります。完了後、ヒストリカルセンターで各時間足のレコード件数が増えていることを確認すれば、複数時間足を組み合わせた戦略のバックテストにそのまま使えます。MT4ヒストリカルデータを多時間足で使い倒すには、この一括変換が事実上の必須ツールです。
注意したいのは、period_converter Allのコード品質はコミュニティ配布版によって差があることです。配布元によっては生成されたチャートの最終バーが欠損したり、メモリ使用量が異常に増えるバージョンが存在します。導入時はソースコードを必ず開いて、OnStart内のロジックが標準PeriodConverterと同等の構造になっているかを確認しましょう。MQL4のコードは難読化されていないテキストなので、数分の読み込みで安全性は判定できます。エンジニア視点では「ブラックボックスのまま実行しない」が鉄則です。
バックテスト実行前の最終チェック
各時間足の生成が終わったら、バックテストを走らせる前に最終確認を行います。第一に、ストラテジーテスターを開き、対象通貨ペアと時間足を選択して「期間」を絞った上で「モデリング品質」表示をチェックします。インポートと変換が正しく終わっていれば90%以上、できれば99.0%まで上がるはずです。
第二に、テスト開始日と終了日を実際のヒストリカルデータの範囲内に設定します。データがない期間を指定するとMT4は警告なくテスト範囲を勝手に短縮するため、サンプル数が想定より少なくなることがあります。第三にスプレッド設定で、ここを「現在の値」のままにすると業者の現在スプレッドが適用されてしまうので、検証用には固定スプレッド(USDJPYなら1〜2pipsなど)を明示的に入力する方が安全です。
私は最終チェックリストとして、モデリング品質、テスト期間、スプレッド、初期証拠金、ロットサイズ、最大ドローダウン許容値の6項目を毎回確認しています。実際の運用はMQLでバックテストを取って勝率を確認する手順でカバーしているので、データ整備とバックテスト実行は地続きの工程として組み立てると効率が上がります。
また、初回バックテスト実行直後にはレポート出力をCSVで保存し、後で再検証できるアーカイブを残しておくのが安全策です。MT4のテスターレポートは「設定」「結果」「グラフ」のタブに分かれており、右クリックから「レポートを保存」でHTMLおよびCSVに出力できます。検証期間を変えて同一戦略を複数回テストする場合、毎回の結果を時系列で比較できる形で残すと、データの違いか戦略パラメータの違いかが切り分けやすくなります。整備されたMT4ヒストリカルデータを使ったテストは、結果のアーカイブまでセットで管理すると価値が最大化されます。
よくあるエラーと対処法
MT4ヒストリカルデータの整備で頻繁にぶつかるトラブルは大きく4つです。第一は「インポートしたのにデータが反映されない」で、原因はほぼ最大バー数の上限到達です。「ツール」→「オプション」→「チャート」タブの「最大バー数」と「ヒストリーの最大バー数」を9999999999など最大値に設定し、再度インポートしてください。
第二は「PeriodConverterを実行しても何も起きない」で、これは1分足以外のチャート上で実行している可能性が高いです。必ずM1のオフラインチャートを開いた状態でスクリプトを起動してください。第三は「変換した時間足のローソク足が歯抜けになる」で、1分足側に欠損があると変換後の時間足にも欠損が伝播します。データソースを差し替えるか、別のリサンプリングツールを併用する判断になります。
第四は「ストラテジーテスターでモデリング品質が25%や65%から上がらない」で、これはティックデータが不足している場合に発生します。1分足HSTだけでなく、Tick Data Suite等のティック補完ツールを併用すると99.0%まで到達できます。エラーは経験値を上げてくれる教材なので、つまずいた場面はそのままメモに残しておくと次の検証で役立ちます。
意外と多いのが「インポートしたHSTファイルが消える」現象で、これはMT4のオプション設定や保存先パーミッションの問題で発生します。MT4を「Program Files」配下にインストールしたままだとWindowsの保護機能でHSTファイルが書き戻されない場合があるため、MT4インストール手順とポータブルモード設定を参照してポータブルモードに切り替えると安定します。MT4ヒストリカルデータが揮発する環境ではいくら整備しても無駄になるため、保存先の安定性は最初に固めておきましょう。
MT4ヒストリカルデータ整備のまとめ
MT4ヒストリカルデータの整備は、バックテストの精度と再現性を左右する最も基礎的でありながら、最も省略されやすい工程です。本記事ではFXDDからのダウンロード、ヒストリカルセンターでのインポート、PeriodConverterによる各時間足の生成、エラー対応までを一気通貫で解説しました。
ポイントは、データソースを一つに固執せず複数で照らし合わせること、最大バー数の上限を最初に外しておくこと、PeriodConverterは1分足を起点にすること、そしてバックテスト前にモデリング品質を90%以上に保つことです。これらを満たすだけで、検証結果の信頼性は大きく変わります。実際にこの手順で整えたデータでバックテストを行うと、同じ戦略でも勝率の振れ幅が±2%以内に収まり、戦略の良し悪しを正しく判断できるようになります。
データ整備が終わったら、次は実際のバックテスト実装フェーズに進みましょう。完全坊主ロウソク足の逆張り勝率をMT4でバックテスト検証のような具体例を参考にすると、整備したMT4ヒストリカルデータがどのように戦略検証で活きるかが見えてきます。検証の土台が整えば、あとは仮説を立てて回すだけです。
最後に運用面の補足を3点。第一に、データ更新のタイミングは月1回程度を目安にし、定例の作業として組み込むと忘れません。第二に、検証結果ログには使用データの取得日と取得元を必ず明記し、後日「同じ条件で再現できないバックテスト」を作らないこと。第三に、データ整備の手順自体を社内Wikiや個人のメモに記録しておくと、新しい通貨ペアを追加する際の所要時間が大幅に短縮されます。MT4ヒストリカルデータの整備は単発作業ではなく、トレード環境全体のメンテナンスサイクルの一部です。地味な作業ですが、ここを丁寧にやっているかどうかが、長期的なバックテストの信頼性と運用成績を左右します。


コメント