Структура файла с экспортом биржевых курсов валют

Для организации структуры файла используется JSON формат данных.

Все начинается с такой конструкции:

Пробелы и отступы в примерах используются исключительно для удобства их восприятия.

Потом нужно указать список из валют, которые фигурируют в заявках. Список должен состоять из пар номер валюты: код валюты. Номер валюты не может быть 0, и должен состоять из цифр от 0 до 9, и/или букв от a до z. В качестве номера валюты можно использовать ее номер из БД или порядковый номер появления ее в файле (например: 1, 2, ..., 9, a, ..., z, 10, ..., 1a, ...). Все это должно выглядеть примерно так:

Как видно из примера выше, валюты указываются в currencies, там указано три валюты: доллары, рубли и биткоины.

Дальше, приступаем к указанию валютных пар. Они указываются особым образом, который показан в следующем примере.

Как уже можно заметить, все валютные пары указываются в такой последовательности: trade -> номер валюты продажи -> for -> номер валюты покупки.

Только такая последовательность, никакой другой быть не должно.

Теперь, для каждой валютной пары указываем список ордеров. Каждый ордер указывается в таком виде: [курс, сумма] (без пробела).

Курс должен быть кратным 1, то есть либо 1 = Х, либо Х = 1, Х при этом должен быть числом, большим или равным 1. Как сделать курс кратным 1, описано здесь. Курс берется из Х, причем, если он в виде 1 = Х то, со знаком минус.

Сумма, это объем валюты, доступный для покупки/продажи по этому курсу.

Количество знаков после запятой в курсе должно быть не более 6, с округлением в меньшую сторону. Количество знаков после запятой в суммах криптовалют должно быть не более 8-ми, а для всех остальных не больше 2-х.

В примере ниже указаны следующие ордера на покупку/продажу валюты:


Как курс сделать кратным?

Берем меньшее из двух чисел и делим на него каждое число курса. Например: