交易撮合引擎(Matching/TradingEngine),顾名思义是用来撮合交易的软件,广泛地应用在金融、证券、数字货币交易等领域。交易引擎负责管理数字货币市场中所有的开口订单(OpenOrders),并在发现匹配的订单对(TradingPair)时自动执行交易。
数字货币交易所中的核心技术就是撮合引擎的开发,那么在数字货币交易中撮合引擎的原来及构成有哪些呢?下面我们来逐步介绍:
交易撮合引擎
正如前面所述,交易撮合引擎是用来撮合交易的软件,可以先把交易撮合引擎看作一个黑盒子,它有一些输入和输出。
例如,可能的输入包括:
创建新的委托单(NewOrder):一个新的委托单可以作为交易撮合引擎的输入,引擎会尝试将其与已有的委托单进行撮合。
取消已有的委托单(CancelOrder):用户也可以取消一个之前输入的委托单,如果它还没有执行的话,即开口订单。
当然你可以定义其他的输入,出于简化考虑,我们现在只定义上述两个输入。
交易撮合引擎的输出是一些事件,以便及时通知其他应用处理。例如,当引擎撮合了一笔交易后,就会触发一个TradesGenerated事件;而当取消了一个已有的委托单后,引擎就会触发OrderCancelled。同样,你可以根据自己的需求来定义引擎的输出,这里我们还是简单点,只定义这两个输出事件。
交易委托账本
交易委托账本(OrderBook)就是一个买方委托单或买方委托单的列表,通常按照价格和时间排序。
当一个新的买方(买方)委托单进入引擎后,引擎就会将尝试其与现有的卖方(买方)委托账本进行匹配,看是否存在执行交易的可能。如果找到了匹配的对手单,引擎就可以执行这两个委托单了,也就是撮合成功了。
委托单
在任何交易引擎中,都可能有多种类型的委托单供用户选择。其中常见的类型包括:
限价委托单:限价委托单是在当前的数字货币交易环境中常用的委托类型。这种委托单允许用户指定一个价格,只有当撮合引擎找到同样价格甚至更好价格的对手单时才执行交易。
对于一个买方委托单而言,这意味着如果你的委托价格是¥100,那么该委托单将会在任何不高于¥100的价格成交(买到指定的价格或者更便宜的价格);而对于一个卖方委托单而言,同样的委托价格意味着该委托单将在任何不低于¥100的价格成交(卖出指定的价格或者更高的价格)。
市价委托单:市价委托单的撮合会完全忽略价格因素,而致力于有限完成指定数量的成交。市价委托单在交易委托账本中有较高的优先级,在流动性充足的市场中市价单可以保证成交。
例如,当用户委托购买2个BTC时,该委托单可以在¥900、¥1000、¥2000或任何其他价位成交,这依赖于市场中当前的敞口委托单的情况。
止损委托单:止损委托单尽在市场价格到达指定价位时才被激活,它的执行方式与市价委托单一旦止损委托单激活,它们可以自动转化为市价委托单或限价委托单。
这些是交易撮合引擎的原理和构造,如果希望打造一个的交易所,那么还有其他一些需要了解的概念和产品知识,例如流动性、多空交易、风控管理等等,我会持续更新更多的产品理解。