软件详细设计说明书(例) 下载本文

.

5.2.2 集合竞价

集合竞价是指对所有有效委托进行集中处理,深、沪两市的集合竞价时间为交易日上午9:15至9:25。

集合竞价原则:

? ? ? ?

集合竞价分四步完成:

第一步:确定有效委托在有涨跌幅限制的情况下,有效委托是这样确定的: 根据该只证券上一交易日收盘价以及确定的涨跌幅度来计算当日的最高限价、 最低限价。有效价格范围就是该只证券最高限价、最低限价之间的所有价位。

限价超出此范围的委托为无效委托,系统作自动撤单处理。

第二步:系统根据竞价规则自动确定集合竞价的成交价,这个价格就是当日的开盘价, 所有高于开盘价的买盘和所有低开开盘价的卖盘均以此价格成交, 集合竞价的成交价确定原则是:以此价格成交,能够得到最大成交量。

第三步:集中撮合处理所有的买委托按照委托限价由高到低的顺序排列, 限价相同者按照进入系统的时间先后排列;所有卖委托按委托限价由低到高的顺序排列 , 限价相同者按照进入系统的时间先后排列。依序逐笔将排在前面的买委托与卖委托配对成交,即按照\价格优先,同等价格下时间优先\的成交顺序依次

精选范本

凡是高于开盘价的买单一定成交; 凡是低于开盘价的卖单一定成交; 凡是高于开盘价的卖单一定不成交; 凡是低于开盘价的买单一定不成交;

.

成交,直至成交条件不满足为止,即不存在限价高于等于成交价的叫买委托、或不存在限价低于等于成交价的叫卖委托。

所有成交都以同一成交价成交。 这同一成交价成交的买卖单一般量都是很大的,如图3.2.3所示

卖队列开盘撮合买队列

图3.2.3所示

第四步:行情揭示:

1.)

如该只证券的成交量为零,则将成交价位揭示为开盘价、最近成交价、最高价、最低价,并揭示出成交量、成交金额。

2.)

剩余有效委托中,实际的最高叫买价揭示为叫买揭示价,若最高叫买价不存在,则叫买揭示价揭示为空;实际的最低叫卖价揭示为叫卖揭示价,若最低叫卖价不存在,则叫卖揭示

精选范本

.

价揭示为空。

集合竞价中未能成交的委托,自动进入连续竞价。

按照这样的原则和要求,我们设计了如下的集合竞价撮合算法。如图3.2.4所示。

精选范本

.

BuyQueue[ ]判断两队列是否都不为空是否小于0开盘价为昨日收盘价,成交量为0SellQueue[ ]判断差价 BuyQueue[0].price-SellQueue[0].price大于等于0i=j=0, M、N分别为BuyQueue[ ]与SellQueue[ ]非空元素的数目; BOOL k; Buy=BuyQueue[0]; Sell=SellQueue[0]判断差价 BuyQueue[i].price-SellQueue[j].price大于等于0判断差量Buy.count-Sell.count小于等于0i++; k=false; Buy1.count=Buy.count; Buy.count=Buy.count+BuyQueue[i].count;是判断是否i

精选范本

.

集合竞价算法描述:

和连续竞价一样,首先设定QueueStruct结构为元素的买卖两个队列BuyQueue和SellQueue。

为了尽可能的提高效率,减少资源占用,我们用静态数组构建这两个队列。

其中BuyQueue是时间优先、买价降序排序,而SellQueue是时间优先、卖价升序排序。在开市到开盘这段时间内,买卖单已经分别进入了买卖队列内排好了序。

一旦宣布开盘,则触发集合撮合,如下:

? ?

判断两队列是否都不为空,如是,转2;如否,转21; 判断BuyQueue[0].prince与SellQueue[0].prince之差,如大于等于0,转3:如小于0,转21;

?

定义int i=j=0;M、N分别为买卖两队列非空元素的个数;BOOL k;QueueStruct Buy=BuyQueue[0];Sell=SellQueue[0];Buy1;Sell1;转4;

?

判断BuyQueue[i].prince与SellQueue[j].prince之差,如大于等于0,转5:如小于0,转14;

?

判断Buy.count与Sell.count之差,如大于0,转6;如小于等于0,转9;

?

j++;

k=true;

Sell1.count=Sell.count;

Sell.count=Sell.count+SellQueue[iSellQueue].count;转7;

精选范本