程式
有哪些方法可以使本地和遠端訂單簿保持同步?
場景:開發一個自定義應用程序,該應用程序定義了一個結構化的工作流程,用於向 Bloomberg EMSX 手動送出訂單;它應該盡量減少自己的持久化狀態,並儘可能依賴遠端訂單簿;它應該能夠抵禦故障和停機,並防止重複送出訂單;它應該只關心目前一天內發生的事情。
有沒有處理這個的標準模式?理想情況下不是彭博特定的。
我目前的想法是有三個列表:
- 提議的訂單 - 未送出,未執行;
- 已送出訂單 - 已送出執行,但尚未收到確認;
- 已執行的訂單 - 收到送出確認,正在接收填充。
然後會有一些過程會“努力”保持三個列表同步:
- 使用者送出訂單:從建議訂單列表中刪除並添加到送出訂單列表;
- 收到確認/填寫:從送出的訂單列表中刪除並添加到已執行的訂單列表中。
更實際地,它將反應性地作用於三組相應的事件流並管理相應的訂單列表。
訂單將有一個唯一的 ID。還將使用特定於執行平台的重複預防,例如 EMSX_REQUEST_SEQ,但這並不意味著不應該進行更早的檢查。
你怎麼看?
我給你的3點:
- 通常會執行較早的檢查,例如訂單的預合規檢查。
- 三種不同類型的訂單被正確辨識 - 即建議的訂單但未路由,送出的訂單和等待確認。當訂單添加到送出隊列時,它應該通過合規檢查,然後添加將被路由的訂單。
- 理想情況下,訂單 ID 和執行 ID 應該分開,因為有時訂單會部分執行。