Сравнение записей спецификации инструмента
Сравните две записи спецификации перед тем, как использовать прежнее число лотов на другом счете. Одинаковые символы или число десятичных знаков не подтверждают равенство размера контракта, затрат и условий исполнения.
Все исходные условия A и B вымышлены. Дата 12 октября 2026 года относится к примеру, а не к проверке рынка. Инструмент не подключается к счету, не отправляет введенные записи и не сохраняет их между посещениями. Не вставляйте пароли и персональные данные.
Две записи и одно число лотов
Для сравнения и скачивания отчета нужен JavaScript. Полные исходные записи и ручной разбор доступны ниже.
Формат и три состояния результата
Укажите version: 1, где 1 — число. Остальные поля содержат текст, например "contractSize": "100000". Для sessions и costs также разрешены объекты. Вложенные объекты могут содержать массивы; порядок их элементов важен. Названия полей и английские строки внутри учебных JSON сохранены буквально: это сравниваемые данные, а не переведенные подписи интерфейса.
«Совпадает» означает буквальное равенство известных значений; «различается» — их различие. «Неизвестно» получается, если хотя бы с одной стороны поле отсутствует, равно null, содержит пустой текст, только пробелы или пустой объект. Два неизвестных значения не становятся подтвержденным совпадением. Вложенные ключи объектов сравниваются независимо от порядка; текстовые пробелы и регистр не исправляются. Время и валюты не преобразуются. Разные строки могут описывать одинаковый смысл, но инструмент его не устанавливает.
Предел каждой записи — 64 KiB, то есть 65536 байт UTF-8; глубина — 8 уровней, число значений — 2000. Не разрешены повторные ключи в одном объекте, небезопасные имена и неизвестные поля верхнего уровня. Для вложенных чисел поддерживается не больше 15 значащих цифр с дополнительными ограничениями конечности и безопасных целых. Для числовых условий спецификации используйте десятичный текст, сохраняя оригинал отдельно.
| Имя JSON | Значение |
|---|---|
version | Версия формата |
provider | Поставщик |
symbol | Записанный символ |
product | Вид продукта |
contractSize | Размер контракта на один лот |
tickSize | Минимальный шаг цены |
tickValueProfit | Стоимость тика для прибыльной позиции |
tickValueLoss | Стоимость тика для убыточной позиции |
volumeMin | Минимальный объем |
volumeStep | Шаг объема |
volumeMax | Максимальный объем |
baseCurrency | Базовая валюта |
profitCurrency | Валюта прибыли |
marginCurrency | Валюта маржи |
accountCurrency | Валюта счета |
tradingMode | Режим торговли |
sessions | Расписание и часовой пояс |
costs | Затраты и база начисления |
snapshotTime | Время записи с часовым поясом |
Стоимость тика для прибыли и убытка записывается отдельно. Укажите валюту счета, время наблюдения с часовым поясом, расписание с перерывами и базу начисления затрат. Совпадение текста не подтверждает ни подлинность исходных файлов, ни действующие условия счета.
Ручной пример: одинаковые лоты, разное число единиц
Только для этого вымышленного валютного примера считаем, что размер контракта выражен в EUR на один лот. У A это 100000 EUR/лот, у B — 10000 EUR/лот. Число единиц равно размеру контракта, умноженному на число лотов.
| Запись | EUR/лот | Лоты | Единицы EUR |
|---|---|---|---|
| A | 100000 | 0.10 | 10000 |
| B | 10000 | 0.10 | 1000 |
| B: те же единицы, что у A | 10000 | 1.00 | 10000 |
| A: другой объем | 100000 | 0.15 | 15000 |
| B: тот же объем | 10000 | 0.15 | 1500 |
| B: те же 15000 единиц | 10000 | 1.50 | 15000 |
Дополнительно зададим сетку допустимых объемов как минимум плюс целое неотрицательное число шагов. Для A минимум и шаг равны 0.01 лота, поэтому 0.15 попадает на эту сетку. Для B минимум и шаг равны 0.1 лота: допустимая последовательность начинается с 0.1, 0.2, 0.3; значение 0.15 между ними. Произведение 10000 × 0.15 = 1500 вычисляется, но само по себе не подтверждает допустимость заявки. Инструмент эту сетку не проверяет.
Упражнение: сколько лотов B даст 15000 EUR по заданной формуле?
15000 / 10000 = 1.50 лота. По отдельно заданной учебной сетке B это допустимая точка: (1.50 − 0.1) / 0.1 = 14. Равенство единиц не означает равенства риска, затрат, маржи или результата исполнения.
Границы расчета и неизвестная валюта
Число единиц выводится только после успешного сравнения, если поле baseCurrency известно и буквально совпадает. При пустом, отсутствующем или различающемся обозначении показывается предупреждение без сумм в его единицах; механическое сравнение остальных полей остается доступным. Это относится и к TXT.
Совпадающее непустое обозначение все равно остается заявлением пользователя. Например, "EUR " с пробелом не равно "EUR"; если обе стороны содержат "EUR ", строки совпадут. Инструмент не проверяет действительность кода валюты и показывает заявленное обозначение в кавычках. Он также не устанавливает, что размер контракта произвольного CFD или фьючерса выражен именно в единицах указанной базовой валюты.
Для умножения размер контракта должен быть положительным десятичным текстом длиной до 48 символов, не больше 1000000000000 и в поддерживаемом формате до 15 значащих цифр. Вычисление использует двоичное число JavaScript Number; результат округляется до 12 значащих цифр. Это приближение, а не точный денежный расчет. Правила обработки длинных последовательностей нулей наследуются от исходного модуля и не заменяют проверку оригинальной спецификации.
Здесь не рассчитываются риск, прибыль, маржа, конвертация валют, затраты и перенос позиции. Не проверяются минимальный, максимальный объем, его шаг и режим расчета конкретного продукта. Одинаковый символ и результат умножения не дают основания переносить позицию или открывать сделку.
Полные исходные записи без JavaScript
Это те же исходные строки A и B, которые установлены в полях формы. Щелкните запись или перейдите к ней клавишей Tab; используйте стрелки и PageDown для прокрутки.
Исходная запись A целиком
{
"version": 1,
"provider": "Provider A — synthetic",
"symbol": "EURUSD",
"product": "Hypothetical currency CFD",
"contractSize": "100000",
"tickSize": "0.00001",
"tickValueProfit": "1",
"tickValueLoss": "1",
"volumeMin": "0.01",
"volumeStep": "0.01",
"volumeMax": "100",
"baseCurrency": "EUR",
"profitCurrency": "USD",
"marginCurrency": "EUR",
"accountCurrency": "USD",
"tradingMode": "Demo model: both directions",
"sessions": "Synthetic schedule; verify zone and breaks",
"costs": {
"commission": "Synthetic example: record basis separately"
},
"snapshotTime": "2026-10-12T08:00:00Z"
}Исходная запись B целиком
{
"version": 1,
"provider": "Provider B — synthetic",
"symbol": "EURUSDmini",
"product": "Hypothetical currency CFD",
"contractSize": "10000",
"tickSize": "0.00001",
"tickValueProfit": "0.1",
"tickValueLoss": "0.1",
"volumeMin": "0.1",
"volumeStep": "0.1",
"volumeMax": "50",
"baseCurrency": "EUR",
"profitCurrency": "USD",
"marginCurrency": "EUR",
"accountCurrency": "USD",
"tradingMode": "Demo model: both directions",
"sessions": "Synthetic schedule; verify zone and breaks",
"costs": {
"commission": "Synthetic example: record basis separately"
},
"snapshotTime": "2026-10-12T08:00:00Z"
}Сохранение и повторная проверка
TXT содержит русское пояснение и структурированный JSON с теми же результатами сравнения и разрешенного расчета. Имена полей программы не переводятся; управляющие символы внутри текста экранируются JSON, поэтому не создают ложные строки таблицы. Отчет не включает исходные файлы и не удостоверяет их содержимое.
Изменение любого поля убирает старый результат и кнопку скачивания. Сброс возвращает оба примера и 0.1 лота. Очистка удаляет только записи A и B, сохраняя число лотов. Для нового отчета снова нажмите «Сравнить записи».
Справочник свойств символа MQL5 отдельно определяет размер контракта, шаг цены, стоимость тика, валюты и ограничения объема. Это документация платформы, а не подтверждение условий конкретного счета. Подробнее о контексте сравнения — в исходном англоязычном руководстве о смене брокера.