Skip to content

lenarsaitov/orderbook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Биржевой стакан на 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. В проекте пока не реализован механизм лимитного ордера

About

Order Book with core functionality

Topics

Resources

Stars

Watchers

Forks

Languages