Сравнение двух записей исторического теста
Сопоставьте два описания условий исторического тестирования. Инструмент сравнивает введенные JSON-записи в браузере. Он не читает файлы, не вычисляет их контрольные суммы, не запускает MT5 и не подтверждает, что описание соответствует реальному тесту. Не вводите пароли, реквизиты счета или личные данные.
Что означает результат
«Совпадает» означает равенство сравниваемых значений, «отличается» — их различие. «Неизвестно» появляется, если сравниваемое поле отсутствует, равно null, содержит пустую или состоящую из пробелов строку либо пустой объект {}. Два неизвестных поля тоже не становятся подтвержденным совпадением. Имя файла или заявленный хеш остаются текстом: одинаковая надпись не доказывает одинаковых байтов.
Формат и границы
Нужны два JSON-объекта с обязательным version, равным числу 1. Это версия схемы, а не робота. Остальные 12 допустимых полей перечислены ниже; имена ключей не переводите.
| Ключи | Что записать |
|---|---|
platform, build, codeRevision | Платформу, сборку и идентификатор кода с зависимостями. |
inputs, dataSnapshot | Параметры и идентификатор сохраненной выборки данных. |
symbolSpecification, executionModel, costs | Условия инструмента, способ моделирования исполнения и заданные расходы. |
requestedStart, actualStart, end | Запрошенное и фактическое начало, конец теста с явной часовой зоной. |
initialState | Начальный баланс, позиции и значимые условия инициализации. |
Непустые значения верхнего уровня — строки; inputs, costs и initialState также могут быть обычными объектами. Внутри них допустимы JSON-значения, в том числе вложенные массивы. Вложенный пустой массив [] — известное значение; это не пустой объект {}. Для точных десятичных параметров используйте строки с точкой.
Предельный размер каждой записи — 64 КиБ (65 536 байт UTF-8); глубина не более 8 уровней, суммарно не более 2000 значений. Числа внутри JSON ограничены поддерживаемой точностью: не более 15 значащих цифр и без небезопасных больших целых, переполнения или исчезновения ненулевой величины до нуля. Повторные, запрещенные служебные ключи и неизвестные поля верхнего уровня отклоняются. Точное большое число можно хранить строкой, но инструмент не проверяет его экономический смысл.
Порядок ключей объекта не важен. Порядок элементов массива важен. Строки "1" и "1.0" различаются; числовые JSON-записи 1 и 1.0 после чтения являются одним числом. Строки с разными обозначениями единиц или одного момента времени автоматически не приводятся к общему виду. Приписывание Z серверному времени не превращает его в UTC. Инструмент не проверяет календарную корректность даты.
Сравните две записи
Оба начальных объекта — полностью синтетические примеры, а не экспорт MT5. Сохраняем даты примера 1–12 октября 2026 года. Английские технические значения с пометкой synthetic означают условные идентификаторы; это не свежая проверка файлов или теста.
Записи A и B
Полные исходные примеры A и B — доступны без JavaScript
Это неизменные тексты начальных вымышленных примеров. Они не меняются вместе с введенными выше записями. Откройте раздел и прокручивайте каждую область клавишами стрелок или Page Down.
Исходный пример A
{
"version": 1,
"platform": "MT5 — synthetic example",
"build": "demo-build-a",
"codeRevision": "synthetic-code-v1",
"inputs": {
"period": "14"
},
"dataSnapshot": "synthetic-export-v1",
"symbolSpecification": "synthetic-EURUSD-spec-v1",
"executionModel": "synthetic real-tick mode declaration",
"costs": {
"commissionPerFillUSD": "1",
"fills": "2",
"financingUSD": "0",
"otherUSD": "0"
},
"requestedStart": "2026-10-01T00:00:00Z",
"actualStart": "2026-10-01T00:00:00Z",
"end": "2026-10-12T00:00:00Z",
"initialState": {
"depositUSD": "1000",
"positions": "none"
}
}Исходный пример B
{
"version": 1,
"platform": "MT5 — synthetic example",
"build": "demo-build-a",
"codeRevision": "synthetic-code-v1",
"inputs": {
"period": "14"
},
"dataSnapshot": "synthetic-export-v1",
"symbolSpecification": "synthetic-EURUSD-spec-v1",
"executionModel": "synthetic real-tick mode declaration",
"costs": {
"commissionPerFillUSD": "2",
"fills": "2",
"financingUSD": "0",
"otherUSD": "0"
},
"requestedStart": "2026-10-01T00:00:00Z",
"actualStart": "2026-10-01T00:00:00Z",
"end": "2026-10-12T00:00:00Z",
"initialState": {
"depositUSD": "1000",
"positions": "none"
}
}Для сравнения и скачивания результата нужен JavaScript. Примеры и формат записи доступны ниже и выше на этой странице.
Обработка происходит в памяти этой страницы: инструмент не отправляет введенные записи на сервер и не записывает их в localStorage. Скачанный TXT содержит введенные значения; проверьте его перед сохранением или передачей. В TXT имена полей записаны как JSON-строки: табуляция и переносы строк внутри ключа не создают дополнительные столбцы или строки отчета. Это не гарантия поведения расширений или иных функций вашего браузера. Изменение любого поля убирает старый результат и возможность его скачать до нового сравнения. Кнопка возврата восстанавливает исходные A и B и очищает результат.
Условные расходы: два исполнения
Пусть линейная сделка в USD дала ценовой результат 10 USD; есть два платных исполнения, финансирование и прочие платежи равны нулю. A заявляет 1 USD за исполнение, B — 2 USD. Чистый результат A: 10 − 2 × 1 = 8 USD; B: 10 − 2 × 2 = 6 USD. Разница 2 USD объясняется только заданным тарифом при прочих равных условиях. Начальные записи отличаются в costs.commissionPerFillUSD: сравнитель должен показать одну измененную строку. Он сам не вычисляет денежный результат и не подтверждает тариф брокера.
Почему число исполнений и равный итог требуют внимания
В другом условном расчете при трех платных исполнениях и тех же 10 USD до расходов результаты равны 10 − 3 × 1 = 7 USD и 10 − 3 × 2 = 4 USD. Разница уже 3 USD. Одна сделка может содержать несколько исполнений: проверяйте фактический отчет и основание начисления комиссии. Эти суммы не являются универсальным тарифом MT5 или любого счета.
Отдельный учебный пример: ценовые результаты 10 и 12 USD при расходах 2 и 4 USD дают одинаковые чистые 8 USD. Равный итог не доказывает равенства составляющих. И наоборот, одинаковые заполненные метаданные не проверяют сами файлы или полноту описания. Назначенные суммы не являются оценкой качества стратегии.
Что проверять после сравнения
Сохраните отдельно отчеты, исполнения, журналы, код и данные обоих запусков. При различии разберите одно условие, сохранив прежний результат; при совпадении описаний найдите первое расходящееся событие журнала и недостающую зависимость. Фактическое начало теста может отличаться от запрошенного, а условия комиссии — зависеть от режима начисления. Сравнение деклараций не устанавливает причину отличия, ошибку платформы, торговое преимущество или будущую доходность.
Связанный разбор: почему одинаковый советник дает разные результаты тестов.
Источники и область применения
- MT5: настройки тестирования стратегий
Одиночный тест, параметры и расходы. Комиссии имеют разные способы и моменты начисления; учебный тариф за исполнение нельзя переносить на все счета.
- MT5: подготовка истории и фактическое начало
При нехватке подготовительной истории фактическое начало теста может переноситься вперед. Нужны отчет и журнал конкретного запуска.
- MT5: особенности среды тестера
Глобальные переменные агента, передаваемые параметры и файлы, отдельные каталоги агента. Совпадение пользовательских описаний не проверяет все зависимости.
Объяснение программного сравнения деклараций и документации тестера. Все денежные примеры и идентификаторы вымышлены. Это не проверка счета, исполнимых рыночных данных или закона определенной страны; русский язык не определяет резидентство.