2011-10-31 86 views
5

OrderBook充滿了買賣訂單。更新,新訂單可能會執行交易。訂單數據庫設計

我似乎無法找到任何實施例。

我們可以爲每個訂單提供一個id,並逐個執行checkExecute命令。但我們希望能夠擴展到數千個活動訂單。

我們可以對價格進行排序以獲取將要執行的訂單(因爲它們重疊)。但我們必須小心謹慎,並且只能按照訂單收到的順序執行:)

想法?

回答

2
  • 我們必須要小心,只在收到訂單的順序執行

市場數據通常是仿照時序的方式,因此它自然受到時間戳有序目前其精度達到皮秒級。

取決於你依賴的是什麼技術,如果你不介意付錢,我會選擇OneTick,這是一個時間系列數據庫,它已經有一本內置的書籍深度/價格水平的訂購書,CEP等等。

如果您想自己構建(或依賴免費產品),請查看OpenTSDB,它是一個開放源代碼,具有LGPLv3 +許可證的時間系列數據庫。它當然會比OneTick慢,但是由於您只需要數千個(OneTick可以處理數十億),這取決於您的速度要求,因此它可能會起作用。

至於OrderBook數據模型,它取決於你打算如何使用這本書:你關心多個價格水平嗎?書的頂部?你需要匹配出價/要求的實際訂單等。

但你可以設計一個模式,它會記錄訂單量事件,如啓動:

enter image description here

的例子是LMAX Protocol Reference Guide

2

Python的OrderedDict可以作爲可擴展OrderBook的基礎。您需要爲每個價格級別定製一個有序字典,以便訂單根據價格/時間優先級進行匹配。