実践ワークショップ

MT4・MT5バックテスト:tick、費用、配列と時計を点検

実tickの時間範囲と件数比率、CopyRatesの添字、UTC条件、CSVの重複を検算。ニューヨークの二つの01:30をJSTで照合します。

検証データと複数の時計を抽象化した編集用イラスト。実際のテスト成績ではありません。
データ、時刻、仮定を照合する概念図。実運用の再現や利益を保証しません。

レバレッジを使うFXやCFDでは、短時間で大きな損失が生じることがあります。内容は学習用であり、個別の投資助言ではありません。

この記事の内容

この記事を読むと…

  • tick件数比率と分のカバー率の分母を区別する。
  • 確定足の参照、費用、テスター時計の限界を確認する。
  • 同じ海外時計表示でも異なるUTC/JSTの瞬間を保存する。

記事内で用語を調べる

バックテスト BidとAsk(売値と買値) スプレッド コミッション(売買手数料) ドローダウン 勝率

利益が出たバックテストでも、データ、執行仮定、パラメーター選択が非現実的なら実運用と大きく異なります。MT4/MT5のモード、費用、未使用データの確認を通じ、差の原因を調べる手順です。

MT4とMT5のテスターで何が違うか

両方ともEAを履歴で実行します。MT5は複数銘柄と最適化パスのエージェント分散に対応しますが、一回のEAが全コアを使う意味ではありません。MT4にも遺伝的最適化がある一方、標準テスターは対象外銘柄で売買を実行しません。別々の報告を足しても共有資金のポートフォリオにはなりません。ビルド、コンパイル済EA、入力、銘柄仕様、口座仮定を保存します。MT4のHistory Centerから取得した履歴は業者サーバーの履歴と異なる場合があります。期間の長さや足名だけでは適否が決まりません。MT4の基礎とMT5の機能比較も確認してください。

多いtick数は、長い実tick時間を意味しない

品質の百分率を比べる前に、分母が時間区間か個別レコードかを特定します。

図全体を見るには横にスクロール →

横にスクロールすると図全体を確認できます。

実tickの時間カバー率と件数比率三つの架空の分足があり、第一・第二には実tick各10件、第三には実tickなしとします。第三だけ生成80件を加え、棒は共通スケールで10・10・80です。実tickがある分は2/3、約66.67%。全100件の実レコード比率は20%です。分母が違う独自指標で、Modelling Quality欄や実テスター結果ではありません。異なる二つの分母架空の3分間・レコード件数第1分:実tick10第2分:実tick10第3分:生成80020406080実tickがある分:2/3時間カバー率:約66.67%実レコード:(10+10)/100件数比率:20%

仮定:同じ長さの架空三分間で各分に足があります。10・10・80件が模型の全件数で、第三は生成だけです。実際の配信やテストを評価する例ではありません。

三つの分足はすべて存在します。二つの分に実tick各10件、第三は分足があるのに実tickがなく、模型で生成80件を加えます。最終データは100件です。

独自の実tick分カバー率は2/3 ≈ 66.67%、実レコード比率は20/100=20%。一分内の件数が増えると後者の分母は変わりますが、履歴に別の一分が追加されるわけではありません。互換な百分率でも戦略の優位性でもありません。

MetaQuotesの実tick・生成tickの説明では、分足があり実tickがない区間の生成が扱われています。80という件数はこの教材で置いた仮定であり、レポート値ではありません。どちらの独自指標もModelling Quality欄の定義ではありません。

時間カバー率とレコード比率は異なる分母を持ちます。

モードと履歴データの品質

MT4のOpen prices only、Control points、Every tickは、足履歴と生成経路を使います。Control pointsは粗い予備評価です。MT5には保存済の業者tickと1 minute OHLCもあります。日足シグナルでも足内ストップは影響し得る一方、始値動作に適合するルールは限界を確認して簡略化できる場合があります。MT5では分足があり実tickがない分に生成を補えます。実tickのスプレッドは分内で変化し得ますが、生成にはその分足に割り当てた気配差を使います。

対象商品と期間のデータ範囲を調べます。MT4への外部tick導入には互換な準備手順が必要で、生成テストファイルや追加ソフトが関わる場合があります。HST足だけで真正なtick検証は保証されません。MT5でも実tickの範囲と生成代替を確認します。

費用と執行設定を一件ずつ照合

商品・口座のスプレッド、手数料、資金調達費、遅延設定を確認します。標準MT4はBid履歴に指定スプレッドを加え、既定ではテスト開始時の気配差を使います。完全な履歴変動ではありません。架空の5桁EUR/USDで0.00001の12 pointsは、0.0001の1.2 pipです。MT5では口座設定か独自手数料を使え、入口・出口・両方の課金を一取引で照合します。pips損益モードは手数料・スワップ・証拠金管理を省きます。遅延模擬は条件比較であり、全ライブ流動性や約定の復元ではありません。

検証をゆがめる三つの偏り

先読みは判断時点で使えなかった情報の利用です。shift 0は進行中の現在足を指し、10:15には10:00開始H1のそこまでの高値は分かりますが最終高値は分かりません。確定足ルールなら待ちます。すべての0を1へ置き換えると、正当な新足検出や現在価格ルールまで変わります。時刻、コピー件数、配列の添字方向を入力ごとに確認します。

成功した架空のCopyRatesで、古い順から現在までの終値が100・101・102・103の四件とします。動的配列のas_series=falseならrates[1].closeは101、最後の確定終値はrates[2].close=102。as_series=trueならrates[1].closeが102です。「最後の確定終値>101.5」は真ですが、通常配列で誤ってrates[1]を読むと却下されます。古い足を取り違えた例で、未来情報の証拠ではありません。戻り件数が少ないのに四件あるとして参照しないでください。

過剰適合は、反復探索で都合のよいノイズを選ぶことで起こり得ます。高い勝率やprofit factor、低いドローダウンだけでは証明できません。生存バイアスは、過去に存在したが後に消えた商品や口座を対象から外す偏りです。当時利用可能だった集合を作ります。結果が必ず30–50%膨らむという普遍的な値は示していません。

報告とウォークフォワードを読む

純損益、取引数、下落、費用仮定を合わせて読みます。元の架空PLN口座は開始10,000、確定益500でbalance 10,500、含み損700なら他変化前のequityは9,800です。balanceだけでは見えないエクスポージャーがあります。profit factorやSharpeの閾値で戦略を認証せず、感応度と分離した評価データを調べ、レポートとログを保存します。

ウォークフォワードは、順次選んで凍結したパラメーターを後の期間で評価します。同じ基準で年率化し、時系列の未使用期間取引を確認します。WFEだけで頑健性や過剰適合は証明できず、IS収益がゼロ・負なら解釈も難しくなります。ウォークフォワードの手順を参照してください。

OOSは該当するパラメーター探索から除外したデータ上で、凍結規則を評価します。データ・約定仮定を持つシミュレーションであり、将来の実運用成績の確認ではありません。

MT4/MT5の限界と別手段の選択

テスターはコード化した規則を、そのデータ・執行模型で評価します。裁量も、基準とリプレイ手順を残せば比較でき、必ず検証不能なわけではありません。必要な入力や執行を表現できなければ別手段を選び、現行資料・データ条件を確認します。Forex Testerの比較は別のリプレイ手順、戦略検証の方法は製品に依存しない進め方を扱います。

テスターのTimeGMTでUTCフィルターを検証できるか

MT5テスターのTimeGMTは、模擬TimeTradeServerと同じです。二関数の一致だけで業者の過去UTCオフセットは復元できません。各時刻軸を特定し、明示した入力で換算を検証します。「常に2時間引く」だけではサーバー時刻の変化を記録できません。

同じ瞬間を、別の時刻表示で照合する

横にスクロールすると図全体を確認できます。

テスター時計の一致は実際のUTCオフセットの証明ではない架空の同じ瞬間は12:00 UTC、明示したUTC+2では14:00です。対象フィルターは12:00以上13:00未満UTCです。12:00 UTC判断時刻UTC + 2明示した仮定14:00サーバー表示UTC条件12:00–13:00
テスター内の時計一致は、業者の過去オフセット表ではありません。

模型では12:00以上13:00未満UTCを許可します。12:00 UTCの判断は範囲内、仮定UTC+2なら表示14:00です。この14をUTCとして判定すると却下されます。+2はこの例だけの仮定です。終了境界、日付変化、実際に文書化されたオフセット変更を別々に試してください。

演習:テスターの二時計が等しければ、ライブでも同じUTC条件になりますか。

いいえ。二時計の一致はシミュレーション内だけの関係です。明示的なUTC、該当日の文書化されたオフセット、区間境界テストで換算を評価します。関数名だけでは業者の時刻帯は分かりません。

次の実行前にCSVを書き出して点検

列名timestamp,open,high,low,closeと明示的なオフセットを用意します。ローカルCSVカバー率チェッカーで予定開始・終了の足時刻と間隔を指定します。元の架空M1例08:00–08:11は12行でも、有効な異なる時刻は8個で、空き4枠、重複行2件、OHLC不一致グループ1件です。報告を保存し、商品の取引セッションと照合します。OHLCの完全性は実tickの完全性を証明せず、チェッカーは価格を補完したりテスターの執行を検証したりしません。

次に行うこと

  1. 対象商品・日付の文書化されたデータを選びます。MT4の足履歴・生成モード・外部FXT準備、MT5の実tick範囲・生成代替を点検し、提供元、時刻帯、欠損、設定を保存します。モード名だけで妥当とは判断しません。
  2. 口座に記載された費用、資金調達費、スプレッド、利用できる遅延設定を使い、不利な条件も試します。固定7 USDやpipペナルティをすべての業者へ当てはめないでください。
  3. 戦略に適切なら4年で選び、続く1年を凍結OOSへ分けます。同じ年率基準で比べますが、WFE<0.5だけで過剰適合と断定しません。標本数、市況、費用を検討し、最後の未使用評価を残します。
  4. 価格・指標が利用可能となる時点を確認します。確定足が必要な規則だけ、0から確定足参照へ変更します。シグナル時刻と取引を比べ、結果30%の差だけで先読みと判断しないでください。

実データと方法を確認する

EUR/USD公表2,560件、未公表の平日49日と、別途照合されたTARGETカレンダー。元データ、図、コードで、公表がない日と欠損を区別する研究です。

未公表は欠損とは限らない:ECBカレンダー2016–2025 →

日本で照合するCSV:同じ01:30でも別の瞬間

追加の架空レコード例です。2026年11月1日のニューヨークは夏時間終了により01:30が二度あります。01:30−04:00と01:30−05:00は、表示時計が同じでも異なる瞬間です。実際の取引時間や業者tickの存在を主張する例ではありません。

二つの01:30をJSTへ変換2026年11月1日のAmerica/New_York夏時間終了を使う架空レコード。市場データの有無は仮定しません。仮定に基づく計算01:30 −04:0005:30 UTC → 14:30 JST01:30 −05:0006:30 UTC → 15:30 JSTオフセットなしで同一視二つの瞬間を一件へ誤結合
二つの01:30をJSTへ変換. 2026年11月1日のAmerica/New_York夏時間終了を使う架空レコード。市場データの有無は仮定しません。

同じ時計文字列だけで重複を判定せず、元のオフセットを保存します。

小さな画面では横にスクロールするか、図を拡大できます。数値と要点は下のテキストにも記載しています。

01:30 −04:00
05:30 UTC → 14:30 JST – 夏時間側の一回目。
01:30 −05:00
06:30 UTC → 15:30 JST – 標準時側の二回目。
オフセットなしで同一視
二つの瞬間を一件へ誤結合 – JSTに夏時間がないことは、元時刻の曖昧さを解決しない。

JSTでは同日14:30と15:30になり、一時間違います。タイムゾーンを消した文字列で重複排除すると二時刻を一つへ潰し得ます。元のオフセットと時刻帯を保持し、UTCの瞬間へ変換してから照合してください。日本国内に夏時間がなくても、海外CSVの曖昧な時刻は消えません。

理解度を確認

練習の目安: 約2分.

同じ第三の分に生成レコードを追加すると、この模型で変わらないのはどれですか。

答えと解説を見る

正解です。実tickを持つ別の分を追加していないので、時間区間の比率は変わりません。

よくある質問

MT4の品質99%と90%は何が違いますか。
MT4の欄は利用可能履歴からのtick生成についてで、正しい価格予測や将来利益の確率ではありません。外部ツールの99%表示も、その準備手順を点検する必要があります。足内の仮定、価格側、費用を確認します。MT5の実tickモードでも分足に対するtick欠損と生成代替を確認してください。
MT5テスターをどう設定しますか。
コンパイル済EA、入力、ビルドを保存し、銘柄、足、期間、初期額・通貨、口座模型、証拠金条件を選びます。規則と履歴に合うtickモードを使い、手数料・スワップ・遅延を照合します。最適化を切った一回の検証を先に行い、個別取引とログを保存します。必須の5年履歴や固定ダウンロード時間はありません。
MQL5の先読みをどう防ぎますか。
判断時に未入手だった値を使わないことです。shift 0がその時点までの現在足を返すこと自体は先読みではありません。確定足規則なら時刻を確かめ、CopyRatesの開始位置と受取配列添字を分け、as_seriesと戻り件数を確認します。デモとの結果差だけでは漏洩を診断できません。
手作業とコード検証のどちらが有効ですか。
手動リプレイは裁量基準や曖昧例を残せますが、後の価格を知る反復は偏り得ます。コードもデータ、版、設定、乱数を管理して初めて再現できます。数千取引が独立性や有意性を作るわけではありません。同じシグナルと執行仮定で比べ、100取引や固定作業時間、全機械戦略の成功率を一律基準にしないでください。

出典と検証

  1. www.metatrader5.com

    内容の参考資料。記事に記載した範囲と前提を確認してください。

  2. www.metatrader5.com

    内容の参考資料。記事に記載した範囲と前提を確認してください。

  3. www.metatrader4.com

    内容の参考資料。記事に記載した範囲と前提を確認してください。

  4. docs.mql4.com

    内容の参考資料。記事に記載した範囲と前提を確認してください。

  5. www.mql5.com

    内容の参考資料。記事に記載した範囲と前提を確認してください。

  6. www.mql5.com

    内容の参考資料。記事に記載した範囲と前提を確認してください。

  7. data.iana.org

    内容の参考資料。記事に記載した範囲と前提を確認してください。

計算例には前提条件を明記しています。現在の市場データや提供会社の取引条件の代わりにはなりません。

著者について

Jarosław Wasińskiはポーランドの編集者・市場アナリストです。2004年にMyBank.plを設立し、2007年から外国為替市場の分析に携わっています。