高频交易
高频交易是指从那些人们无法利用的极为短暂的市场变化中寻求获利的计算机化交易,比如,某种证券买入价和卖出价差价的微小变化,或者某只股票在不同交易所之间的微小价差。在高频交易中,自动化应用程序每天处理几亿个市场信号,在全球各地的交易所发送上千万个订单。为了保持业务竞争力,响应时间必须始终保持在微秒级,尤其是在黑天鹅异常事件等高峰期。
高频交易系统的典型系统结构一般是这样:金融交易信号将转换成内部市场数据格式(交易使用TCP、UDP等各种协议)和多种格式(如二进制、SBE、JSON、FIX等)。然后,这些标准化的消息被发送到算法服务器、统计引擎、UI、Log Server和各种数据库(缓存、文件或分布式数据库)。任何延迟都会带来都会带来高成本的结果。例如,根据根据旧的价格进行决策或下单太迟。为了获得微秒级的优势,大部分交易参与者都会投入高价硬件:一个超频液冷CPU的服务器池(2020年可以买56核、5.6GHz、1TB内存的服务器),组装在主交换数据中心、高端纳秒级网络交换机、专用跨洋线,甚至是微波网络。
常见的高频交易系统使用高度定制的Linux内核,并且带有操作系统旁路,这样数据就可以直接从网卡 "跳转" 到应用程序、基于IPC 进程间通信,甚至使用FPGA(可编程单用途芯片)。至于编程语言,一般首先想到的就是C++,事实上也确实是这个领域的天然选择。C++的最大优势就是运行速度快,最接近机器代码,而且是直接根据目标平台进行编译,具有高效稳定的特点。
使用Java代替C++
我们做了一个不同的选择。在过去14年里,我们在外汇算法交易领域用Java进行开发,并使用廉