Биржа принимает лимит-заявки одного инструмента.
Каждая заявка описывается шестью полями и поступает в систему в порядке возрастания order_id
(это же порядок их появления во входном файле).
При встрече BID- и ASK-заявок сделка совершается, если лучшая цена покупки ≥ лучшая цена продажи
. Причем сделка происходит по цене той заявки, что была добавлена ранее.
Первой выбирается заявка с лучшей ценой (для BID чем выше - тем лучше, для ASK - чем ниже), а при равенстве цены — с меньшим order_id
(FIFO).
По результатам всех сделок нужно посчитать статистику для каждого счёта (account_id
), более подробно написано в формате выходных данных.
Во входном файле CSV-таблица со строкой заголовка:
order_id,type,account_id,dir,price,amount
далее — N (1 ≤ N ≤ 2·10^5)
строк вида
1,limit,12345,1,10.5,100
Имя поля | Тип | Описание |
---|---|---|
order_id |
64-bit int | уникальный идентификатор заявки |
type |
строка | всегда строка limit |
account_id |
64-bit int | номер счёта |
dir |
int {0,1} | 0 — BID (покупка), 1 — ASK (продажа) |
price |
float | цена лота |
amount |
64-bit int | количество лотов |
CSV-таблица со строкой заголовка
account_id,saldo,position,turnover,trade_amount
и одной строкой для каждого счёта (порядок строк — по возрастанию account_id
).