如果你希望按照自己的需求打造金融交易平台,那么应当选择合适的交易撮合引擎进行二次开发而不是基于完整的交易平台实现进行修改。本文将介绍10个采用不同语言开发的开源的撮合引擎,你可以根据自己的需要选择。

要快速掌握区块链和数字货币应用开发,推荐汇智网的区块链开发系列在线教程。 内容涵盖比特币、以太坊、EOS、超级账本、Tendermint等多种主流区块链 平台,同时支持Java、C#、Python、PHP、JavaScript、Dart等多种开发 语言。

1、Liquibook

  • 开发语言:C++
  • 源代码:https://github.com/enewhuis/liquibook

Liquibook是OCI提供的开源交易撮合引擎,主要采用C++开发,因此性能极佳:

7个开源的交易所撮合引擎_第1张图片
Liquibook的功能很完善,支持市价委托单、限价委托单、止损委托单等常见类型的委托,同时内置多级市场深度聚合功能,并且提供事件通知功能,引擎内发生的重要事件,例如接受订单、成交、取消订单等,应用程序都可以实时捕捉。

Liquibook是一个仅包含头文件的库,因此你只需要在自己的项目中引入这些头文件就可以了。

2、exchange-core

  • 开发语言:Java
  • 源代码:https://github.com/mzheravin/exchange-core

exchange-core是一个基于LMAX Disruptor和Eclipse Collections实现的超快的交易所核心撮合引擎。可以在8年前的硬件上(intel志强x5690 CPU)实现每秒5百万委托账本操作:

rate 50.0% 90.0% 95.0% 99.0% 99.9% 99.99% worst
125K 0.6µs 0.9µs 1.0µs 1.4µs 4µs 24µs 41µs
250K 0.6µs 0.9µs 1.0µs 1.4µs 9µs 27µs 41µs
500K 0.6µs 0.9µs 1.0µs 1.6µs 14µs 29µs 42µs
1M 0.5µs 0.9µs 1.2µs 4µs 22µs 31µs 45µs
2M 0.5µs 1.2µs 3.9µs 10µs 30µs 39µs 60µs
3M 0.7µs 3.6µs 6.2µs 15µs 36µs 45µs 60µs
4M 1.0µs 6.0µs 9µs 25µs 45µs 55µs 70µs
5M 1.5µs 9.5µs 16µs 42µs 150µs 170µs 190µs
6M 5µs 30µs 45µs 300µs 500µs 520µs 540µs
7M 60µs 1.3ms 1.5ms 1.8ms 1.9ms 1.9ms 1.9ms

7个开源的交易所撮合引擎_第2张图片

exchange-core的主要特性包括:

  • HFT优化
  • 内存工作状态
  • 无浮点数计算,不会丢失精度
  • 支持CPU多核并行
  • 采用对象池化降低垃圾回收压力

3、CppTrader

开发语言:C++
源代码:https://github.com/chronoxor/CppTrader

CppTrader是采用C++开发的一套用于构建高性能交易平台的组件,包括以下内容:

  • 超快的交易撮合引擎
  • 委托账本处理器
  • NASDAQ ITCH 处理器

CppTrader的主要特性包括:

  • 跨平台支持Linux、OSX和Windows
  • 包含详细的使用示例代码和测试用例
  • 支持持续集成

4、GO-matching-engine

开发语言:GO
源代码:https://github.com/fmstephe/matching_engine

这是一款采用GO语言开发的金融交易撮合引擎,非常适合希望深入探究撮合引擎实现的go开发者。

5、viaBTC Exchange Server

开发语言:C
源代码:https://github.com/viabtc/viabtc_exchange_server

viaBTC交易服务器是viabtc开源的代码,它其实是一套基本完整的交易所后台系统,包括撮合引擎、行情服务、历史数据服务以及API服务等多个组件:

7个开源的交易所撮合引擎_第3张图片

由于viabtc交易服务器是一个系统,因此部署的复杂性更高一些,你需要MySQL、Redis、Kafka等基础设施,相比于单纯的撮合引擎而言适应不同项目需求的灵活性要弱一些,但好处在于你基本上只需要补充一个前台系统就可以了。

6、LightMatchingEngine

开发语言:Python
源代码:https://github.com/gavincyi/LightMatchingEngine

LightMatchingEngine是一个轻量级的交易撮合引擎,采用Python开发。轻量的意思是其支持的特性有限,但适合希望深入了解交易撮合引擎实现原理的Python开发者利用。

LightMatchingEngine支持Python2.x和Python3.x。

7、orderbook-rs

开发语言:Rust
源代码:https://github.com/dgtony/orderbook-rs

Orderbook-rs是采用Rust开发的交易撮合引擎,适合用于研究交易撮合引擎的实现原理。

orderbook-rs支持的特性包括:

  • 市价委托单
  • 限价委托单
  • 取消限价委托单
  • 部分成交

原文链接:7个开源交易撮合引擎 - 汇智网