开发高频交易系统难不难?

Connor 欧易app 2022-08-30 2120 0

高频交易系统的设计和开发是一个非常复杂的工程,而且对于准确性和稳定性要求极高,不够精密就上线后会出现各种问题,根本无法使用。

高频交易系统的精髓在于把单机的软硬件系统的性能发挥到极致,而不强调高负载和延展性。高频交易系统的核心业务逻辑处理的核心是延时。在计算机内部分两个部分,一是core的使用率,比如irq balance、cpuisol、affinity等,主要是要尽可能的独占core;另一个是cache invalidation,从L1/L2/L3cache到TLB,内存布局都要仔细考虑。

高频交易系统的设计和开发

交易策略程序作为操作系统的用户程序存在。行情数据主要通过UDP与TCP两种方式进行网络传输。行情数据到达网卡后,通过PCI Express 或HyperPort接口,再传到操作系统的内核(OS Kernel)进行TCP/IP 协议栈解析,再把解析后的数据内容通过socket 接口,推送到用户程序即策略中。然后用户程序再对数据按照规定的格式进行解析,然后应用在策略逻辑中,进行分析,下单等动作。

高频交易整个过程的处理时间数量级在两位数微秒左右。在整个行情数据内部传递与解析的过程中,能够优化的主要是TCP/IP协议栈的解析和业务数据的解析。由于策略逻辑的多样性,对策略逻辑的普遍加速的可能性不大。TCP/IP协议栈的解析(TOE,TCP/IP offload engine)和业务数据的解析主要由专用的网卡来做。目前有两种方法来实现,一种是在网卡附带的CPU上进行处理(IBM有一款网卡附带CELL芯片,功能很强大);另一种是网卡+FPGA的形式,用FPGA(现场可编辑门阵列)来做TCP/IP的解析和业务数据的解析。FPGA因为全部是硬件,速度会更快些。通过硬件加速的方法,可以达到个位数微秒(us)的延迟,并且能够做到无论在数据多少都达到固定的性能。

评论