В данной работе фигурируют две сущности: биржевой стакан OrderBook и заявка Order
Реализованные методы класса OrderBook
- Постановка заявки в стакан (put_order)
- Снятие заявки по идентификатору заявки (delete_order)
- Получение данных заявки по идентификатору (get_order)
- Получение снапшота рыночных данных с необходимой агрегацией и сортировкой по цене (snapshot_market) в json формате
- Вывод заявок с сортировкой по цене (present_orderbook_with_each_order)
Класс заявок Order имеет следующие свойства:
- Side. Сторона торговли. 0 если покупатель, 1 если продавец
- Price. Цена товара
- Quantity. Количество товара
В биржевом стакане реализован механизм рыночного ордера
Реализованы следующие тесты:
- Проверка сортировки ордеров в биржевом стакане
- Проверка агрегации ордеров по ценам
- Проверка получения данных заявки по идентификатору
- Проверка снятия заявки по идентификатору
- Проверка процесса торговли при рыночном ордере
Каждый из них проверяется в 4х тестовых сценариях:
- Имеются ордера с двух сторон
- Имеются биды, но отсутствуют аски
- Имеются аски, но отсутствуют биды
- Отсутствуют и аски, и биды
Таким образом общее количество тестов: 20
Тесты рекомендуется запускать командой:
pytest -v -s --tb=line test_order_book.py
В случае, если имеется потребность это отключить, то необходимо закомментировать в файле test_order_book.py следующую строку:
sys.stdout = open('log_tests_results.txt','wt')
P.S. В проекте пока не реализован механизм лимитного ордера