匹配或交易引擎是一个软件,它记录了市场上所有未完成的订单,如果两个订单可以互相满足,就会产生新的交易。
换句话说:如果你有一个市场,用户可以用比特币卖出以太币,你要跟踪的事情包括:以太币在比特币中的当前买入/卖出价格是多少,哪些买入或卖出订单还没有完成,并允许处理新订单。
那么,你如何开始建立一个匹配引擎呢?
首先,你需要了解所有涉及的概念,以及每种类型的订单的作用,所以让我们一个一个来。
如上所述,匹配引擎是我们想要建立的软件。像任何有用的软件一样,它有一些输入和输出。
在这个例子中,我们把一些命令作为输入,并产生事件作为输出。
可能的命令有:
- NewOrder:在订单簿中添加一个新的订单,并试图将其与现有订单相匹配。
- CancelOrder:如果一个订单仍然在订单簿中,则取消该订单。
还可以定义其他的命令,但为了简单起见,我们现在只讨论这两条。
可以产生的事件与上述命令的执行方式有关:
- TradesGenerated:包含由特定订单对产生的交易列表。
- OrderCancelled:表示订单在完全填满之前就被取消了。
订单簿是一个按价格和时间戳排序的买入或卖出订单的列表。
当收到一个新的订单时,我们会对照市场的另一边进行检查(对于一个新的买入订单,我们会检查卖出订单),看是否有任何订单符合新订单所施加的条件。
如果是这样,那么我们在订单之间产生交易,直到条件失效或订单被执行。
在任何交易引擎中,终端用户都可以接触到多种类型的订单。
其中一些包括:
- Limit order
- Market order
- Stop order
你也可以选择添加额外的条件,影响订单何时进入/退出市场,使用条件和期限。但这里不会讨论这些,因为它们是更高级的主题。