撮合引擎是所有撮合交易系统的核心组件,不管是股票交易系统——包括现货交易、期货交易、期权交易等,还是数字货币交易系统——包括币币交易、合约交易、杠杆交易等,以及各种不同的贵金属交易系统、大宗商品交易系统等,虽然各种不同交易系统的交易标的不同,但只要都是采用撮合交易模式,都离不开撮合引擎。
完整的交易流程如下
1.系统开放某个交易标的的交易功能。
2.用户提交该交易标的的买卖申报,即委托单。
3.系统验证委托单是否有效,包括交易标的是否处于可交易的状态、订单的价格和数量是否符合要求等。
4.确定该委托单的挂单(Maker)费率和吃单(Taker)费率。
5.检查用户的资产账户情况,包括账户状态是否交易受限,是否有足够资金用于下单等。
6.将详细的委托单数据持久化到数据库,并冻结用户账户中相应数量的资金。
7.将委托单进行撮合处理,即在交易委托账本(OrderBook)中寻找能与该委托单匹配成交的订单,匹配的结果可能是:全部成交、部分成交或无匹配。全部成交或部分成交时,可能在交易委托账本中存在一个或多个匹配的订单,即会产生一条或多条成交记录。当无匹配或部分成交时,委托单的部分数据包括剩余未成交的数量会暂时保存到交易委托账本中,等待与后续的委托单匹配撮合。
8.将撮合产生的成交记录持久化到数据库,并根据历史成交记录生成市场数据,如K线数据、今日涨跌幅等。
9.更新数据库中所有成交订单的委托单数据,以及更新订单用户的资产账户余额。
10.将更新的订单数据、市场数据等发送给到前台。
撮合竞价方式
- 集合竞价
- 连续竞价(web3都采用这个)
Disruptor的配置类
由于交易所对撮合服务的性能有要求,这里使用java的 Disruptor三方库
这里相当于white true循环读取队列,有内容就给到eventhandler处理
原文始发于微信公众号(8ypass):交易所撮合服务学习-(1)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论