Skip to content

Latest commit

 

History

History
48 lines (37 loc) · 2.68 KB

README.md

File metadata and controls

48 lines (37 loc) · 2.68 KB

Биржевой стакан на Python

Методы и сущности

В данной работе фигурируют две сущности: биржевой стакан OrderBook и заявка Order

Реализованные методы класса OrderBook

  • Постановка заявки в стакан (put_order)
  • Снятие заявки по идентификатору заявки (delete_order)
  • Получение данных заявки по идентификатору (get_order)
  • Получение снапшота рыночных данных с необходимой агрегацией и сортировкой по цене (snapshot_market) в json формате
  • Вывод заявок с сортировкой по цене (present_orderbook_with_each_order)

Класс заявок Order имеет следующие свойства:

  • Side. Сторона торговли. 0 если покупатель, 1 если продавец
  • Price. Цена товара
  • Quantity. Количество товара

В биржевом стакане реализован механизм рыночного ордера

Тесты

Реализованы следующие тесты:

  • Проверка сортировки ордеров в биржевом стакане
  • Проверка агрегации ордеров по ценам
  • Проверка получения данных заявки по идентификатору
  • Проверка снятия заявки по идентификатору
  • Проверка процесса торговли при рыночном ордере

Каждый из них проверяется в 4х тестовых сценариях:

  1. Имеются ордера с двух сторон
  2. Имеются биды, но отсутствуют аски
  3. Имеются аски, но отсутствуют биды
  4. Отсутствуют и аски, и биды

Таким образом общее количество тестов: 20

Тесты рекомендуется запускать командой:

pytest -v -s --tb=line test_order_book.py

При прохождении тестов все выводы print перенаправляются в log_tests_results.txt

В случае, если имеется потребность это отключить, то необходимо закомментировать в файле test_order_book.py следующую строку:

sys.stdout = open('log_tests_results.txt','wt')

P.S. В проекте пока не реализован механизм лимитного ордера