2011-10-31 10 views
5

OrderBook được lấp đầy với lệnh mua và bán. Cập nhật, đơn đặt hàng mới có thể thực hiện giao dịch.OrderBook DB Design

Tôi dường như không tìm thấy bất kỳ ví dụ triển khai nào.

Chúng tôi có thể cung cấp cho mỗi đơn đặt hàng một id và kiểm tra Thực hiện từng đơn đặt hàng. Nhưng chúng tôi muốn một cái gì đó mà sẽ quy mô đến hàng ngàn đơn đặt hàng hoạt động.

Chúng tôi có thể sắp xếp giá để nhận các đơn đặt hàng sẽ được thực hiện (vì chúng trùng lặp). Nhưng chúng ta phải cẩn thận và chỉ thực hiện theo thứ tự mà các đơn hàng đã nhận được :)

Suy nghĩ?

Trả lời

2
  • chúng ta phải cẩn thận và chỉ thực hiện theo thứ tự mà trong đó đơn đặt hàng đã nhận được

dữ liệu thị trường thường được mô hình hóa trong một chuỗi thời gian thời trang, do đó nó tự nhiên được sắp xếp theo một dấu thời gian mà đi lên đến xa như một độ chính xác picosecond vào lúc này.

Tùy thuộc vào công nghệ bạn dựa vào, nếu bạn không ngại trả tiền, tôi sẽ đi với OneTick, đó là chuỗi thời gian DB đã có sẵn sách theo thứ tự với độ sâu sách/mức giá sách , CEP và nhiều hơn nữa.

Trong trường hợp bạn muốn tự xây dựng (hoặc dựa vào các sản phẩm miễn phí), hãy xem OpenTSDB là mã nguồn mở, chuỗi thời gian DB có giấy phép LGPLv3 +. Nó sẽ chậm hơn OneTick tất nhiên, nhưng vì bạn chỉ cần hàng ngàn (OneTick xử lý hàng tỷ) tùy thuộc vào yêu cầu tốc độ của bạn nó có thể làm việc.

Đối với mô hình dữ liệu OrderBook, nó sẽ phụ thuộc vào chính xác bạn sẽ sử dụng cuốn sách như thế nào: ví dụ: Bạn có quan tâm đến nhiều mức giá không? Đầu cuốn sách? Bạn cần phải khớp với giá thầu/yêu cầu các đơn đặt hàng thực tế, vv ..

Nhưng bạn có thể bắt đầu với việc thiết kế một sơ đồ đó sẽ ghi lại các sự kiện orderbook như:

enter image description here

Các ví dụ là từ LMAX Protocol Reference Guide

2

Mã số OrderedDict của Python có thể đóng vai trò là nền tảng cho Sổ đặt hàng có thể mở rộng. Bạn sẽ muốn một từ điển đặt hàng cho mỗi mức giá để các đơn đặt hàng sẽ khớp với mức ưu tiên giá/thời gian.