今天有点忙,特意早起,要不先写点什么。看到个股的红红绿绿, 突然兴起,要不写篇文章分析下A股交易的简易版数据结构。
在A股实时股票交易系统中,按照个人理解,大致会用队列来完成整个交易。队列(Queue)是一种重要的数据结构,用于管理和处理买单和卖单。队列是一种先进先出(FIFO, First-In-First-Out)的结构,确保了最早进入系统的订单会最先被处理。在交易系统中,分别维护买单队列和卖单队列有助于模拟市场的撮合机制。
买单队列(Bid Queue)
买单队列存储所有未成交的买单。每一笔买单包括股票代码、买入价格、买入数量等信息。这些买单根据价格以及时间优先级排序,一般实行价格优先(更高的出价优先匹配),时间优先(同一价格下,先提交的订单优先匹配)的原则。
卖单队列(Ask Queue)
卖单队列存储所有未成交的卖单。每一笔卖单也包括股票代码、卖出价格、卖出数量等信息。卖单队列的排序规则与买单队列相同,通常实行价格优先(更低的出价优先匹配),时间优先(同一价格下,先提交的订单优先匹配)的原则。
订单撮合
撮合过程是交易系统中的核心功能,买单队列和卖单队列将按照特定的规则进行匹配,以完成交易。以下是撮合过程的一般步骤:
-
提交订单:
交易者提交买单或卖单到交易系统中。 -
订单排队:
新提交的买单会加入到买单队列中,卖单加入到卖单队列中,根据价格和时间排序。 -
查找匹配订单:
将买单队列中出价最高的订单与卖单队列中要价最低的订单进行比较。如果买单的出价大于等于卖单的要价,则可以进行交易。 -
成交处理:
如果找到匹配订单,则根据双方的订单数量进行交易:-
如果买单数量等于卖单数量,两个订单都完全成交。
-
如果买单数量大于卖单数量,买单部分成交,余额保留在买单队列中,等待后续卖单继续成交。
-
如果卖单数量大于买单数量,卖单部分成交,余额保留在卖单队列中,等待新的买单匹配。
-
-
更新队列:
成交后,已经完全或部分成交的订单从相应的队列中移除或更新。 -
记录成交:
成交的订单信息会被记录到系统中,用于生成成交报告,更新股票价格等。
其它
撤销委托, 在数据列表里查找到想要撤销的委托记录,从数据结构中移除。
如个股属于注册制,需遵循注册制2%价格笼子。比较买入申报价格 是否比 实时价格高2%, 直接标记该笔买单为废单,不放入买单队列。 比较卖出申报价格 是否比实时价格 低2%, 直接标记该笔卖单为废单,不放入卖单队列。
实际A股交易系统当然没这么简单啦。这里随笔记录一篇。
原文链接: 【数据结构】闲谈A股实时交易的数据结构-队列