Tag: fix

在HFT中尝试并行订单处理是否有意义?

我认为对于那些熟悉hft的人来说,这是一个更理论性的问题。 我收到FAST的订单并处理它们。 我每秒收到大约2-3千个订单。 问题是我是否应该尝试同步或异步处理它们。 每次收到下一个订单,我都需要做以下事情: 更新相应仪器的订单 更新依赖于该订单的索引和指标 更新策略并根据需要安排一些行动(买/卖东西等) 为了做同步,我有大约200-300μs(能够每秒处理3000个订单)。 我认为这应该足够了。 只是为了安排异步任务我花了大约30μs 利弊: 同步: ++不需要同步事物! “接收订单”和“采取行动”之间的延迟较少,因为不需要安排任务或将数据/工作传递给另一个进程(在hft中非常重要!)。 – 但是“收到订单”操作可能会延迟,因为我们可以在套接字缓冲区中等待等待先前的订单处理 异步: ++使用现代服务器的能力(我的服务器有24个内核) ++在某些情况下更快,因为在处理上一条消息时不要等待。 ++可以处理更多消息,也可以为每条消息做更多“复杂”的事情 – 需要同步很多可以减慢程序的东西 同步示例:我们收到更新的MSFT订单,然后更新INTC订单并在不同的线程中处理它们。 在这两种情况下,我们都会触发NASDAQ指数重新计算。 因此纳斯达克指数的计算应该是同步的。 然而,这个特殊问题可以通过工作以避免同步……这只是可能同步的一个例子。 所以问题是我应该处理同步或异步的订单更新。 到目前为止,我处理它们异步,我有每个仪器的专用线程。 因为我可以处理针对不同仪器更新的异步两个(MSFT和INTC),但是应该同步处理一个仪器(MSFT)的两个更新。