GarryChen-site / matching-engine

simple matching engine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

什么是matching engine

匹配或交易引擎是一个软件,它记录了市场上所有未完成的订单,如果两个订单可以互相满足,就会产生新的交易。

换句话说:如果你有一个市场,用户可以用比特币卖出以太币,你要跟踪的事情包括:以太币在比特币中的当前买入/卖出价格是多少,哪些买入或卖出订单还没有完成,并允许处理新订单。

名词

那么,你如何开始建立一个匹配引擎呢?

首先,你需要了解所有涉及的概念,以及每种类型的订单的作用,所以让我们一个一个来。

匹配/交易引擎

如上所述,匹配引擎是我们想要建立的软件。像任何有用的软件一样,它有一些输入和输出。

在这个例子中,我们把一些命令作为输入,并产生事件作为输出。

可能的命令有:

  • NewOrder:在订单簿中添加一个新的订单,并试图将其与现有订单相匹配。
  • CancelOrder:如果一个订单仍然在订单簿中,则取消该订单。

还可以定义其他的命令,但为了简单起见,我们现在只讨论这两条。

可以产生的事件与上述命令的执行方式有关:

  • TradesGenerated:包含由特定订单对产生的交易列表。
  • OrderCancelled:表示订单在完全填满之前就被取消了。

订单薄

订单簿是一个按价格和时间戳排序的买入或卖出订单的列表。

当收到一个新的订单时,我们会对照市场的另一边进行检查(对于一个新的买入订单,我们会检查卖出订单),看是否有任何订单符合新订单所施加的条件。

如果是这样,那么我们在订单之间产生交易,直到条件失效或订单被执行。

订单

在任何交易引擎中,终端用户都可以接触到多种类型的订单。

其中一些包括:

  • Limit order
  • Market order
  • Stop order

你也可以选择添加额外的条件,影响订单何时进入/退出市场,使用条件和期限。但这里不会讨论这些,因为它们是更高级的主题。

Limit order

About

simple matching engine


Languages

Language:Go 100.0%