Воспроизведение версий данных по времени доступности
Локальная учебная проверка: какая версия наблюдения была доступна к решению, чем null отличается от нуля и почему позднее исправление не меняет прошлое.
Воспроизведение доступных версий данных
Задайте учебные события и время решения. Модель выбирает для каждого наблюдения последнюю запись, которая уже доступна к этому моменту. Более поздняя версия не меняет входные данные прежнего решения. Значение null означает явную недоступность: модель не подставляет ноль и не возвращается к старому значению.
Проверка работает локально в браузере: без обращения к счету, API или внешнему архиву и без постоянного сохранения введенного текста. Не вводите пароли и личные сведения. Время в файле — ваше утверждение; инструмент не подтверждает, когда источник действительно опубликовал данные.
Формат и ограничения
Корневой объект содержит числовую version: 1 и массив events из 1–200 событий. У каждого события ровно четыре поля: availableAt, observation, value, revision. Время указывается в UTC строго как YYYY-MM-DDTHH:mm:ssZ, без долей секунды и иных смещений.
observation — непустая строка длиной до 128 единиц UTF-16; revision — непустая строка до 64. Метки версий не задают порядок выбора. value — null либо строка длиной до 128 с цифрами ASCII, необязательным знаком и десятичной точкой: например, "0.00", "+01.20", "-0". Запятая, экспонента и числовое JSON-значение вместо строки здесь не подходят. Текст значения не преобразуется в JavaScript Number и не вычисляется.
Предел JSON — 65 536 байт UTF-8, глубина восемь уровней и 2000 значений. Поле ввода дополнительно ограничено 65 536 символами; многобайтовый текст может достичь байтового предела раньше. Повторяющиеся и небезопасные ключи отклоняются. Два события с одинаковыми observation и availableAt неоднозначны и отклоняются независимо от порядка строк.
TXT содержит полный результат и введенные метки событий; числовое поле at в нем — техническое время UTC в миллисекундах от начала эпохи Unix. Перед сохранением или передачей проверьте личные сведения. Внутренние ключи, replay и коды значений в машинном результате сохраняются для сопоставления.
Для проверки и скачивания нужен JavaScript. Полный начальный JSON и разобранные примеры доступны ниже без запуска формы.
Полный начальный JSON — доступен без JavaScript
{
"version": 1,
"events": [
{
"availableAt": "2026-10-01T12:00:00Z",
"observation": "GDP-model",
"value": "1.0",
"revision": "initial"
},
{
"availableAt": "2026-10-01T13:00:00Z",
"observation": "GDP-model",
"value": "1.4",
"revision": "revised"
},
{
"availableAt": "2026-10-01T14:00:00Z",
"observation": "GDP-model",
"value": null,
"revision": "unavailable"
}
]
}Три версии одного учебного наблюдения
Это вымышленный GDP-model 1 октября 2026 года, а не публикация ВВП и не ответ настоящего API. В 12:00 UTC доступно "1.0", в 13:00 — "1.4", в 14:00 — null. В 12:30 выбирается первая запись, в 13:30 — исправленная, в 14:30 — недоступность. Ровно в 13:00 вторая запись уже доступна: граница включается.
Для отдельного условного правила «значение больше 1.2» число 1.0 дает ложь, а более позднее 1.4 — истину. Подстановка исправления в 12:30 изменила бы решение при тех же ценах. Сам инструмент сигнал не вычисляет и доходность стратегии не оценивает.
Доступный ноль и отсутствие данных — разные состояния
Дополнительный вымышленный пример содержит два наблюдения и намеренно перемешанные строки. В 12:30 UTC для A-model выбирается "0.00", появившееся ровно в момент решения: это доступное значение. Для B-model выбирается null от 12:20; ни старое 7.0, ни будущее 8.0 не подставляются. У B-model остается одна будущая запись, у A-model — ни одной. Буквенные метки a, b, z не являются счетчиком времени.
JSON дополнительного примера — скопируйте в форму и оставьте 12:30 UTC
{
"version": 1,
"events": [
{
"availableAt": "2026-10-01T13:00:00Z",
"observation": "B-model",
"value": "8.0",
"revision": "a"
},
{
"availableAt": "2026-10-01T12:20:00Z",
"observation": "B-model",
"value": null,
"revision": "b"
},
{
"availableAt": "2026-10-01T12:30:00Z",
"observation": "A-model",
"value": "0.00",
"revision": "a"
},
{
"availableAt": "2026-10-01T12:00:00Z",
"observation": "B-model",
"value": "7.0",
"revision": "z"
}
]
}Что эта проверка не устанавливает
Сначала проверьте происхождение архива и доказательства доступности каждой версии. Период наблюдения не равен времени публикации; из одной календарной даты нельзя придумывать точную UTC-секунду. FRED различает сведения, известные сейчас и в прошлом, но его даты версий сами по себе не доказывают точную внутридневную доступность.
В MQL5 функция WebRequest недоступна в Strategy Tester. FileOpen работает в выделенной файловой области; у агента тестирования она отличается от обычной папки терминала. Это основания отделять получение данных от их воспроизведения, а не доказательство правильности конкретного файла. Здесь не запускаются MQL5, терминал, HTTP-запросы или торговые операции.
Выбор версии не воспроизводит Bid/Ask, комиссии, объем, задержку и исполнение. Если требуется использовать последнюю известную величину после сообщения о недоступности, задайте отдельную политику возраста и причин отсутствия заранее. В этой модели такой политики нет.
Вопросы о результате
Почему последняя запись файла может отличаться от выбранной?
Она может появиться после времени решения. Столбец показывает ее для сравнения; это не разрешение использовать будущие сведения.
Означает ли корректный JSON подлинный архив?
Нет. Проверяется соответствие формату и ограничениям, а не происхождение и достоверность объявленных времен. Неверная дата даст логически правильный выбор из неверных предпосылок.
Нужно ли менять null на ноль?
Нет. Доступное числовое текстовое значение ноль и явно недоступная версия различаются. В этой модели null блокирует оценку нового сигнала.
Заменяет ли TXT отчет тестера?
Нет. Это локальный результат отбора версий по введенным событиям, а не журнал исполнения сделок или проверка прибыльности.
Контекст исходной статьи: воспроизведение API-данных в тесте — на английском.
Источники и границы подтверждения
- MetaQuotes — WebRequest: ограничение Strategy Tester
Проверены описание и ограничение вызова в Strategy Tester.
- MetaQuotes — FileOpen: файловая область
Проверены файловая песочница, путь агента и ошибка открытия.
- FRED — периоды доступности версий
Проверены даты real-time period и отличие текущих сведений от известных в прошлом; точная UTC-секунда не заявляется.
- MetaTrader 5 — агенты и файловые области тестирования
Проверены отдельные агенты и файловая область агента, включая раздел общего каталога.