目标:记录所收到的委托交易订单(order),并根据当前市场(记录于交易委托账本上)的委托交易订单(买单buy order/卖单sell order),按照价格优先-时间优先的原则撮合成交,生成并记录电子交易合同(trade)。
交易委托账本工作规则:
1.当收到一个新的买单(buy order)时,如果它的价格大于等于现有的卖单(sell order),则撮合成交,产生并记录一个或多个交易合同(trade);
2.当收到一个新的卖单(sell order)时,如果它的价格小于等于现有的买单(buy order),则撮合成交,产生并记录一个或多个成交记录;
3.撮合成交顺序 - 收到买单(buy order):按现有卖单(sell order)的价格从低到高撮合,卖单(sell order)价格相同时,按收到卖单(sell order)的时间顺序,先到先撮合;
4.撮合成交顺序 - 收到卖单(sell order):按现有买单(buy order)的价格从高到低撮合,买单(buy order)价格相同时,按收到买单(buy order)的时间顺序,先到先撮合;
5.对于任何部分成交(撮合以后,还有部分买/卖数量剩余)的订单,剩余部分必须保留在交易委托账本里,并且保留原有顺序
例子:
Order 1:以100的价格买5手
Order 2:以100的价格买7手
Order 3:以101的价格买1手
Order 4:以100的价格卖10手
当收到Order 4的时候,我们应该按如下顺序撮合并生成交易合同(trade):
Order 5:以100的价格卖7手
当收到Order 5的时候,我们应该撮合并生成如下交易合同(trade):
编程要求: