EAがデモでAPIデータを取得できても、テスターでは同じ応答を得られない場合があります。サーバー障害と決めず、まず実行環境で関数が使えるか確認します。今日の値を昔の判断へ割り当てると別の試験になります。ここでは版・修正・利用不可を明記した架空記録を再生し、外部APIへ接続しません。

WebRequestが動けばバックテストできる?

MQL5公式はStrategy TesterでWebRequestを実行できないと明記します。端末の許可URLへ追加しても制約は変わりません。関数非対応、ネットワーク障害、認証失敗、通常動作時の応答を区別します。

外部の経済観測が必要な規則でも失敗を0へ置換しません。0は正当な観測値かもしれず、未取得とは違います。ファイルへ替えるだけでも、当時未知だった修正値が含まれれば不適切。観測の定義、版、値、利用可能時刻と欠損方針を先に指定します。EAの基礎でデータ・判断・執行を分けて確認できます。

オンラインとオフラインを同じデータ契約に

オンライン側は提供者の応答、試験側は判断時点で利用可能な保存記録を選択します。判断ロジックへは有効値・明示的利用不可・エラーという同種の結果を渡します。これは独自の設計例で、完成ロボットや全API互換性ではありません。アダプターの変更で意味や欠損処理を黙って変えません。

生応答と試験用レコードを分け、出所・schema版・取得時刻・利用可能性の証拠を残します。観測の対象期間と初めて知り得た時刻は別。日付しか分からないvintageから秒単位公表時刻を捏造しません。

FREDのreal-time periodは今日分かる過去と過去時点で分かった情報を区別します。版管理データの例で万能FX APIではなく、日単位の範囲が正確なUTC公表時刻を提供するとは限りません。個別提供者の時系列を確認します。

FileOpenは決められたファイル領域を使い、試験中の相対パスは通常端末と同じ場所とは限りません。openとreadの成功を確認し、空表を完全履歴として扱わず、欠損を認識可能な状態へします。

過去の判断が使える版

三つの架空応答履歴

架空観測GDP-model、2026年10月1日、全時刻UTC。実際のGDP公表・API記録ではありません。availableAtはモデルのアクセス可能時刻で、注文の約定時刻ではありません。

availableAtrevisionvalue
2026-10-01T12:00:00Zinitial"1.0"
2026-10-01T13:00:00Zrevised"1.4"
2026-10-01T14:00:00Zunavailablenull

12:30は1.0、13:30は1.4、14:30は最新のnullにより利用不可。古い1.4へ戻らず、0にも置換しません。

当時利用できた版を再生する

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

当時利用できた版を再生する架空GDP-model。12:00UTCに1.0、13:00に修正1.4、14:00にnullが利用可能。12:30、13:30、14:30の判断は1.0、1.4、利用不可を選択。値なしはゼロではありません。当時利用できた版を再生する12:00 UTC初回版value: "1.0"12:30 → 1.013:00 UTC修正版value: "1.4"13:30 → 1.414:00 UTC利用不可value: null14:30 → 値なし独自の架空イベント・2026年10月1日 UTC
後の修正は過去の判断に使えた情報を変更しません。このモデルのnullは新規シグナル評価を止め、0や古い値へ置き換えません。

値が1.2を超えたら条件成立という別の架空規則は12:30では不成立。後の1.4を代入すると価格履歴が同じでも判断を逆転させます。情報の利用可能性の検査であって収益の証明ではありません。ツール自体は版を選ぶだけでシグナル・リターンを計算しません。

最新値が利用不可でも前の値を保持する戦略なら、許容経過時間と欠損理由を先に定義した別方針にします。本モデルは明示nullで止めます。有利な結果を見てfallbackを追加し、同じ試験として提示しません。

JSTの日付が変わっても、UTCでは同じ日の版を選ぶ別の架空USDJPY-model。価格単位JPY、実市場気配ではありません。初回150.00は2026年10月1日23:50 JST、修正150.20は10月2日00:10 JST。判断は10月2日00:00 JST。日本時間はUTC+9で夏時間なし。仮定に基づく計算初回版の利用可能時刻2026-10-01T14:50:00Z判断時刻2026-10-01T15:00:00Zまだ使えない修正版2026-10-01T15:10:00Z
JSTの日付が変わっても、UTCでは同じ日の版を選ぶ. 別の架空USDJPY-model。価格単位JPY、実市場気配ではありません。初回150.00は2026年10月1日23:50 JST、修正150.20は10月2日00:10 JST。判断は10月2日00:00 JST。日本時間はUTC+9で夏時間なし。

JSTの「10月2日」という日付だけでは、その日のどの判断に使えたか分かりません。入力器はZ形式のみなので、+09:00や日本語日付をそのまま貼らず、同じ瞬間のUTCへ変換してから使います。

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

初回版の利用可能時刻
2026-10-01T14:50:00Z – JST10月1日23:50、value="150.00"。
判断時刻
2026-10-01T15:00:00Z – JST10月2日00:00。初回版150.00を選択。
まだ使えない修正版
2026-10-01T15:10:00Z – JST10月2日00:10、value="150.20"。同じUTC日でも判断より後。

ローカル再生器で確認できること

数値のversion 1とevents配列を含むJSONを使います。各件はavailableAt、observation、value、revisionの四項目。availableAtはYYYY-MM-DDTHH:mm:ssZで小数秒や別オフセットは不可。observationとrevisionは文字列、valueは小数点数値の文字列またはnullで、Numberへ変換しません。1–200件・64 KiB、observation/value128文字、revision64文字までです。識別子やドット小数を翻訳しません。

判断時に利用できた情報を再生

ブラウザー内だけで動く教材です。口座・APIに接続せず、入力を送信・永続保存しません。パスワードや個人情報は入力しないでください。

形式とモデルの制限

version: 1とevents1–200件。各件はavailableAt, observation, value, revisionの四項目のみ。時刻はYYYY-MM-DDTHH:mm:ssZ。observationは128文字、revisionは64文字まで。valueは小数点を使う数値文字列128文字まで、またはnull。欠損はゼロではありません。

判断時刻以下のavailableAtを持つ最新版を選択。同じobservation・availableAtの二件は曖昧として分析停止。JSONは64 KiB、8階層、2,000値まで。時刻は入力上の宣言で、実際の公表時刻は確認できません。

decisionAtも同じUTC形式で別入力。利用可能時刻が判断時刻以下の各観測最新版を選び、初回より前は値なし。同一観測・同一時刻の二件を貼付順で決めず曖昧として拒否します。revisionは数値の時系列カウンターではありません。

貼付イベントのみを扱い、ダウンロードやAPI鍵を使いません。構文が正しいJSONでも真正な履歴とは限りません。後の修正版に初回の時刻を付けたら、正しい選択器でも誤った前提を再生します。実研究では出所と公表時刻を証明する資料を保存します。

テスター説明は各エージェントと端末のファイル領域を区別します。並列試験中に最新応答で上書きせず、固定データを使います。試行マニフェストにはendpoint名だけでなく保存データの版を残します。

Pythonバックテストで時刻結合、経済カレンダーで修正値を確認します。入力再生は約定再生ではありません。Bid/Ask、費用、数量、サーバー応答は別要素。注文なしで数判断の入力を比較してから差の原因を調べます。

EA成果を評価する前の三工程

  1. データ契約と二アダプターを分離し、生応答・観測定義・利用可能性の証拠を保存。欠けた過去版を制約として記し、今日の値を過去知識にしない。
  2. 初回前、初回と修正の間、明示利用不可後を追跡し、ちょうど境界時刻と同一時刻衝突も試す。
  3. 意図したファイルを実際に読み、欠損を認識できるか確認。データ版と報告を保存し、入力差の説明後にシグナル・執行・費用を別検査。正しい再生だけでは将来収益性を証明しない。