Воспроизведение версий данных по времени доступности

Локальная учебная проверка: какая версия наблюдения была доступна к решению, чем 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 вторая запись уже доступна: граница включается.

Три версии учебного наблюдения и выбор по времени доступности
Исправление не переписывает знание прежнего решения. После null старое 1.4 автоматически не используется.

Для отдельного условного правила «значение больше 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-данных в тесте — на английском.

Источники и границы подтверждения