https://github.com/byrnexu/betterquant
欢迎fork/star,本人从事二级市场交易结算系统研发二十多年,这是我前段时间写的一套量化交易系统,目前系统还在不断的完善中,同时希望能在这里认识更多的做量化的朋友。
我建了一个QQ群:431100199 大家交流学习量化交易系统的开发
以下是系统的一个简单介绍:
1、目前的设计中只需要柜台或者交易所提供了委托回报和查询订单信息两个接口(实际理论上也只需要这两个接口),系统就可以帮你精确计算账户、策略、子策略等各个层面的pnl和手续费信息,系统崩溃后的各种信息的恢复,无视各种类型的交易所或者柜台接口,只需这两个接口即可。
2、支持的交易品种包括现货、币本位和U本位永续合约、币本位和U本位交割合约,以及上述合约的单边持仓和双向持仓的仓位管理和盈亏监控功能。当然,前面也提到了,和国内期现货的交易规则类似,让系统支持国内现货和衍生品,除了行情和交易网关接入、因为今仓昨仓而造成的pnl和手续费算法的不同,其他方面基本上不需要做太大的修改❕。目前之所以只接了加密货币,主要目的是先把业务逻辑先打通,系统设计的初衷是同时支持传统二级市场和数字货币的现货及其他衍生品的‼️。加密货币有正反向合约有交割也有永续,有单边持仓双向持仓,有全仓和逐仓,而且是7*24小时交易的,另外每个交易所的接口差异较大,总的来说比国内的期现业务要相对复杂,所以一套系统从支持加密货币到传统传统市场比支持传统市场的系统继而支持加密市场肯定是要容易的多,所以我先打通是加密货币这条通道。
3、强大的灾备功能,任何子系统崩溃,不会导致最终的数据异常‼️。交易服务崩溃,重启后会重建仓位和PNL信息,交易网关崩溃重启后会自动处理崩溃期间产生的未处理的订单状态变化,风控子系统崩溃后重启,同样会恢复各种风控指标。上述的恢复过程无需撤销任何未完结的订单。
4、所有子系统,包括行情子系统、策略引擎、交易服务、交易网关、风控子系统都通过无锁共享内存交互❕。成功的消灭常规方案也就是子系统间通过tcp/domainsocket的百微秒级别的延时❕。用共享内存做子系统之间的ipc,使得系统兼具单进程的性能,同时也具备多进程的安全性,即任意系统crash不会导致其他子系统crash。当然虽然 目前子系统之间是通过共享内存交互的,但这并不是一个单机版的交易系统❕,后续会架设web服务,提供restful和websocket接口,接受远端报单、回报和其他业务功能,同时也将多台托管服务器联系起来。
5、每个子系统有自己独立的PUB_CHANNEL,你可以往自己的PUB_CHANNEL发布TOPIC,比如行情子系统可以发布新合约上线、合约参数的变化情况、风控子系统可以定制自己的风控指标,发布到风控子系统的PUB_CHANNEL,每个子系统可以通过系统的统一的格式订阅和发布自己感兴趣的TOPIC‼️。
6、账户、策略、子策略、用户等各个层面独立的仓位和订单管理功能。
7、很多系统收到报单后会针对订单做事前风控的处理,这个环节成为了这些系统的瓶颈所在,系统默认对收到的订单按照账户维度做了分流,实现了无锁并行的风控处理,使得这个环节变得畅通无阻✈️,当然也可以对代码稍加修改或者以后增加配置项,根据配置指定参数实现更细粒度维度的请求分流。
8、插件式的风控指标管理?,可以根据系统统一的格式撰写动态链接库形式的风控指标,在交易系统运行中你可以启用、禁用或者升级这些风控插件‼️,从而实现风控指标的动态管理,满足7*24小时交易需要,开放式的api接口使得你可以在风控指标接口里得到你任何想要的数据,通过这些数据结合自己的需求定制灵活多样化的风控指标。
9、强大的pnl实时监控功能‼️,你可以在任何子系统(比如策略端)实时订阅并监控账户、策略、子策略、用户、市场、标的、多头头寸、空头头寸等每个维度的已实现盈亏、未实现盈亏(浮动盈亏)、手续费使用情况,或者说任意维度组合的以任意币种计价的已实现盈亏、未实现盈亏(浮动盈亏)、手续费使用情况‼️
10、系统外状态码动态维护功能,由于交易系统可能会接入多个交易所/交易柜台,每个外部交易服务都有自己特定的状态码,策略执行过程中也会收到未知的外部状态,系统在收到这些外部状态之后会自动收录,你可以在运行期间将其映射到指定的内部状态码,由此策略端就能够正确的处理新的状态码的业务逻辑。整个过程无需重启任何子系统❕。
11、交易代码表动态维护功能,系统为定时检测交易所代码表变动情况,除了新代码上下线还有他的一些最大最小的交易以及金额的变动单位等等,如果有变化立刻更新本地码表。
12、每一个策略可以指定若干套参数的子策略,子策略集合由一个线程池管理,子策略的参数可以在运行期间修改并自动更新,也可以在运行中增加或者禁用子策略❕。这一点对于一些7*24小时交易的市场尤为重要。
赞


雷达卡



京公网安备 11010802022788号







