量化交易系统整体架构:
一. 资产服务:
资产服务根据各个交易所当前提供的不同方式,通过REST API或Websocket方式实现了对各大交易所平台账户资产的的获取及推送。
通过资产模块(asset),可以订阅任意交易平台、任意交易账户的任意资产信息。
订阅 `资产事件` 之前,通过部署 [Asset 资产服务器],将需要订阅的资产信息配置到资产服务器,
资产服务器定时将最新的资产信息通过 `资产事件` 的形式推送至 `事件中心` ,只需要订阅相关 `资产事件` 即可。
二. 行情服务:
行情服务根据各个交易所当前提供的不同方式,通过REST API或Websocket方式实现了对各大交易所平台实时行情数据的获取及推送。
通过行情模块(market),可以订阅任意交易所的任意交易对的实时行情,包括订单薄(Orderbook)、K线(KLine)、成交(Trade),根据不同交易所提供的行情信息,实时将行情信息推送给策略;
在订阅行情之前,通过部署 [Market 行情服务器],行情服务器将通过 REST API 或 Websocket 的方式从交易所获取实时行情信息,并将行情信息按照统一的数据格式打包,通过事件的形式发布至事件中心。
三. 事件中心:
EventCenter是整个分布式量化交易系统的消息中转站,采用RabbitMQ服务器部署。AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现。通过 事件中心,可以很容易实现业务拆分,并实现分布式部署管理,比如:
1.行情系统,负责任意交易所的任意交易对的行情收集并发布行情事件到事件中心;
2.资产系统,负责任意交易所的任意账户资产收集并发布资产事件到事件中心;
3.策略系统,负责所有策略实现(量化、做市),从事件中心订阅行情事件、资产事件等,并发布订单事件、持仓事件等等;
4.风控系统,负责订阅任意感兴趣事件,比如订阅行情事件监控行情、订阅资产事件监控资产、订阅持仓监控当前持仓等等;
四. 数据库:
数据库采用MongoDB,MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
五. 风控:
风控主要通过对交易操作的整体定量进行全局把控,方式如下几种:
1. 流量控制上限
2. 单笔委托上限
3. 总成交上限
4. 活动订单上限
5. 单合约撤单上限
6. 保证金占比上限
7. 止损止盈比率自定义控制
任何警告消息都可以通过多种渠道转达,如:短信,电话,钉钉,telegram,邮件等方式进行通知(当然必须事先配置相应接口)。
六. 可以对接的交易所包括(但不限):
1.OKEX数字货币交易所(包括现货交易,现货保证金交易,定期合约交易,永续合约交易)
2.BITMEX数字货币期货交易所
3.BINANCE数字货币交易所
4.HUOBI数字货币交易所(包括现货,期货)
5.GATE数字货币交易所
6.COINSUPER数字货币交易所
7.KRAKEN数字货币交易所
8.DERIBIT数字货币交易所
9.KUCOIN数字货币交易所
10......
七. 可以实施的策略类型:
CTA策略(CtaStrategy)
算法交易(AlgoTrading)
价差套利(SpreadTrading)
高频交易(Hft)