原因有二,一是高频交易着为市场带来了流动性,所以brokers经纪商会给他们返佣,甚至直接支付一定的费用;二是个人交易者能直接拿到crypto的实时市场数据。
为什么原始的市场实时数据如此重要呢?用一句大家熟知的机器学习谚语来回答就是: Garbage in, garbage out 垃圾进,垃圾出。
进来的是垃圾,出去的也一定是垃圾。
总览高频交易系统
构建HFT系统的一大原则是:必须对错误有很大的容忍度(容错率高)。在实盘交易时,会发生各种各样始料未及的错误,比如分布式拒绝服务攻击(Distributed Denial-of-service,DDoS)干扰经纪商执行正常交易。还有就是高频交易必须高频率的获取实时数据,如果哪个链接崩了,整个系统就GG了。
怎么提高HFT系统的容错率呢?我(本文作者)采用了微型服务架构(micro service architecture),它的好处是一旦哪个服务节点崩了,调度器就会马上重启。
高频交易架构的简化图:
1、scrapper
scrapper通过REST API scrapper service获取数据,上图可见REST API scrapper service下面有好多个REST service,分别被标注为REST service 1、REST service 2、REST service 3、REST service 4,这里缓存了最近的市场交易记录,报价和订单薄。
有这么多个service的原因是当连接阻塞时(这种情况经常发生),有多个service能最大程度上保证获取数据的获取。比如有时候其中一个连接崩了,你还有其他不同ip地址的连接,这就保证了实时数据获取的稳定性。
scrapper接收到REST API上的交易信息后,就会把这些信息传递到数据库里,scrapper能在多个REST API的service之间切换,如果检测到哪个service出现了错误,就会立刻重新启动它。
2、Order Execution Service(订单执行服务)
收到量化模型发出的信号,执行下单程序。
3、Quantitative Algorithm Service
模型对数据处理,然后发信号。
4、Development and Research Tools
也就是上面所说的Quantitative Analysis量化分析工具,对高频交易的一些限制条件进行分析(比如什么市场状况下,订单不能成交?)
在HFT系统中,为什么要把REST API抓取服务和scrapper传输器分开?