Algorithm 电子金融交易所最常用的订单匹配算法有哪些?

Algorithm 电子金融交易所最常用的订单匹配算法有哪些?,algorithm,finance,Algorithm,Finance,电子金融交易所最常用的订单匹配算法有哪些? 某个地方有订单匹配算法列表吗?通常他们使用先进先出算法,因为它们最大化了有效订单的数量 每个交易所都有自己的一套规则,并在其网站上进行了解释。 这是一个例子。一般来说,有两组匹配算法,一组用于市场的每个状态: 连续交易 拍卖 拍卖交易有很多种算法,在开盘前、收盘时等使用。但大多数时候,市场进行连续交易。因此,我将在这里进入后一类 最常用的是价格/时间优先级和按比例。这两种方法都已针对各种类型的产品和用例进行了调整和扩展,但为了简洁起见,我在这里仅解

电子金融交易所最常用的订单匹配算法有哪些?
某个地方有订单匹配算法列表吗?

通常他们使用先进先出算法,因为它们最大化了有效订单的数量

每个交易所都有自己的一套规则,并在其网站上进行了解释。
这是一个例子。

一般来说,有两组匹配算法,一组用于市场的每个状态:

  • 连续交易
  • 拍卖
拍卖交易有很多种算法,在开盘前、收盘时等使用。但大多数时候,市场进行连续交易。因此,我将在这里进入后一类

最常用的是价格/时间优先级按比例。这两种方法都已针对各种类型的产品和用例进行了调整和扩展,但为了简洁起见,我在这里仅解释基本内容


价格/时间优先级,也称为先进先出,确保

同一价格水平的所有订单均按时间优先级填写;价格水平上的第一个订单是匹配的第一个订单

假设按价格和时间排序的订单簿如下所示:

Id   Side    Time   Qty   Price   Qty    Time   Side  
---+------+-------+-----+-------+-----+-------+------
#3                        20.30   200   09:05   SELL  
#1                        20.30   100   09:01   SELL  
#2                        20.25   100   09:03   SELL  
#5   BUY    09:08   200   20.20                       
#4   BUY    09:06   100   20.15                       
#6   BUY    09:09   200   20.15                       
Id   Side    Time   Qty   Price   Qty    Time   Side  
---+------+-------+-----+-------+-----+-------+------
#3                        20.30   100   09:05   SELL  
#1                        20.30    50   09:01   SELL  
#5   BUY    09:08   200   20.20                       
#4   BUY    09:06   100   20.15                       
#6   BUY    09:09   200   20.15                       
注意:对于买方订单,按时间排序的顺序为升序,对于卖方订单,按时间排序的顺序为降序,因此优先级最高的订单始终处于中间位置,优先级向外降低(向上或向下,取决于侧面)

现在想象一个新的限价指令“以20.35的价格购买250股”,然后它将按照以下顺序被填充:

  • 100股,每股20.25英镑(订单2)
  • 20:30时100股(订单#1)
  • 50股,每股20.30(第3号指令)
  • 这将使订单簿保持以下状态:

    Id   Side    Time   Qty   Price   Qty    Time   Side  
    ---+------+-------+-----+-------+-----+-------+------
    #3                        20.30   150   09:05   SELL  
    #5   BUY    09:08   200   20.20                       
    #4   BUY    09:06   100   20.15                       
    #6   BUY    09:09   200   20.15                       
    

    按比例忽略下订单的时间,并根据订单的相对数量按价格水平向所有订单分配填充数量。再拿上面的初始订单,让我们匹配相同的“购买250@20.35“订单

    填充物应为:

  • 100@20.25(命令2,留下150)
  • 50@20.30(订单号#1150x1/3=50)
  • 100@20.30(订单号#3150x2/3=100)
  • 将以下订单簿如下所示:

    Id   Side    Time   Qty   Price   Qty    Time   Side  
    ---+------+-------+-----+-------+-----+-------+------
    #3                        20.30   200   09:05   SELL  
    #1                        20.30   100   09:01   SELL  
    #2                        20.25   100   09:03   SELL  
    #5   BUY    09:08   200   20.20                       
    #4   BUY    09:06   100   20.15                       
    #6   BUY    09:09   200   20.15                       
    
    Id   Side    Time   Qty   Price   Qty    Time   Side  
    ---+------+-------+-----+-------+-----+-------+------
    #3                        20.30   100   09:05   SELL  
    #1                        20.30    50   09:01   SELL  
    #5   BUY    09:08   200   20.20                       
    #4   BUY    09:06   100   20.15                       
    #6   BUY    09:09   200   20.15                       
    

    CME小组提供了一个他们所采用的方法,并链接到每个方法的描述


    有关更多信息,您可能还想查看上的“订单匹配”相关文档。

    谢谢。我从你的描述中了解到了发生了什么,但我对表格有点困惑——例如,在第一个表格中,当按价格和时间排序时,为什么要先显示订单#3再显示订单#1?我假设左边的两列是买单,右边的两列是卖单?无论是买还是卖都暗示在表的哪一边数量和时间是开的,但我在表中添加了买/卖指示,使其立即变得明显。我使用ID只是为了让您可以在不同的表之间关联订单。我选择ID来反映订单的提交时间(->时间列)。感谢这一改进,但我不得不说我仍然对行排序感到困惑。据我所知,你是按价格然后按时间排序的,所以所有相同价格的订单都应该按时间递增的顺序出现。因此,根据我的说法,“4”正确地先于“6”,因为它们具有相同的价格,而且“4”首先出现;但我希望1先于3,因为它们的价格相同,而且是先发生的(1的价格是9:01,3的价格是9:05)。为什么#1出现在#3之后?我同意时间顺序有点混乱。我在回答中添加了以下注释:
    NB:卖方订单按时间排序的顺序是升序,买方订单按时间排序的顺序是降序,因此优先级最高的订单始终位于中间,优先级向外降低(向上或向下,取决于侧面)。
    tx是一个清晰的示例。使用它作为简单Java实现的基础是给出
    404
    。你能帮我更新一下吗?告诉我链接断了