OrderBook DB Design - PullRequest
       2

OrderBook DB Design

6 голосов
/ 01 ноября 2011

Книга заказов заполнена ордерами на покупку и продажу.Обновления, новые ордера могут совершать сделки.

Кажется, я не могу найти никаких примеров реализации.

Мы могли бы дать каждому ордеру идентификатор и проверять выполнение ордеров по одному.Но мы хотим что-то, что будет масштабироваться до тысяч активных заказов.

Мы можем отсортировать цены, чтобы получить заказы, которые будут выполнены (потому что они перекрываются).Но мы должны быть осторожны и выполнять только в том порядке, в котором были получены заказы :)

Мысли?

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011
  • мы должны быть осторожны и выполнять только в том порядке, в котором были получены заказы

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

В зависимости от того, на какую технологию вы полагаетесь, если вы не возражаете платить за нее, я бы выбрал OneTick , то есть БД временного ряда, в которой уже есть встроенная книга заказов с Закажите глубину / уровень цен, CEP и многое другое.

Если вы хотите создать его самостоятельно (или полагаться на бесплатные продукты), взгляните на OpenTSDB , который является базой данных с временным рядом с открытым исходным кодом и лицензией LGPLv3 +. Конечно, он будет медленнее, чем OneTick, но, поскольку вам просто нужны тысячи (OneTick обрабатывает миллиарды), в зависимости от ваших требований к скорости, он может работать.

Что касается модели данных OrderBook, это будет зависеть от того, как именно вы собираетесь использовать книгу: например, Вы заботитесь о нескольких уровнях цен? Верх книги? Вам нужно сопоставить ставки / запросы с реальными заказами и т. Д.

Но вы можете начать с разработки схемы, которая будет записывать события OrderBook, такие как:

enter image description here

Пример взят из Справочное руководство по протоколу LMAX

2 голосов
/ 01 ноября 2011

Python's OrderedDict может служить основой для масштабируемой книги заказов. Вам потребуется один заказанный словарь для каждого уровня цен, чтобы заказы соответствовали приоритету цены / времени.

...