集合竞价算法

对于集合竞价算法的疑惑:
按照网上的一些股票交易说明。
集合竞价关键是对两个列表,买单列表(价格从高到低,时间先后顺序)和卖单(价格从低到高,时间先后顺序)的撮合。
关键是确定成交价。
成交价的规则是:
(1)高于选取价格的所有买委托和低于选取价格的
所有卖委托能够全部成交。
(2)与选取价格相同的委托的一方必须全部成交。
如满足以上条件的价位仍有多个,则选取离昨市价最
近的价位。
按照书中所说,算法是:
依序逐笔将排在前面的买委托与卖委托配对成交,
直至成交条件不满足为止(即买价低于卖价),
同样允许部分成交,就是在满足以上情况加,可以部分买入和部分卖出。

以下是一个实例,我想问下用java实现这个算法,还有没有比以下这个实例更优、
更快的算法(列表筛选、计算成交、价代码组织,考虑到单子过多)。
举一个简单的例子,假设深长城在开盘前有 5 笔买入
委托和 6 笔卖出委托,根据价格优先,时间优先的原则,
这 5 笔买入委托价格按由高到低排列,原卖出委托价格由
低至高排列如下:
委买价(元)委托数量(股)   委卖价(元)委托数量(股) 
19.81       300             19.56         600
19.78       700             19.61         200
19.68       500             19.64         300
19.60       800             19.68         700
19.55       700             19.74         700
19.80       400
从委买、委卖情况看,成交价格必须是在 19.56 元至
19.81 元中选取。
在未进行集合撮合成交定出成交价前,按照价格优
先、时间优先的原则,假设符合成交条件并能产生成交的
情况是:
第一笔成交:19.81 和 19.56 成交 300 股
上述排序变为:
股  票  交  易 须 知
44
委买(元)委托数量(手)委卖(元)委托数量(手)
0         0          19.56         300
19.78       700        19.61        200
19.68       500        19.64        300
19.60       800        19.68        700
19.55       700        19.74        700
19.50       400
第二笔成交:19.78 元和 19.56 元、19.61 元成交 500

上述排序又变为:

委买(元)委托数量(手)委卖(元)委托数量(手)
0           0              0           0
19.78       200             0           0
19.68       500         19.64         300
19.60       800         19.68         700
19.55       700         19.74         700
19.50       400
第三笔成交:19.78 元、19.68 元和 19.64 元成交 300
股,上述排序变为:

委买(元)委托数量(手)委卖(元)委托数量(手)
股  票  交  易 须 知  
45
0          0         0         0
0          0         0         0
19.68       400        0         0
19.60       800        19.68     700
19.55       700        19.74     700
19.50       400
第四笔成交:19.68 元和 19.68 元成交 400 股
则上述排序变为:

委买(元)委托数量(手)委卖(元)委托数量(手)
0         0              0            0
0         0              0            0
0         0             0            0
19.60       800         19.68          300
19.55       700         19.74           700
19.50       400
至此,剩下的最高申买委托 19.60 元和最低申卖委托
19.68 元无法再继续撮合成交。
根据上述 4 笔成交的情况看, 至 19.68 元, 这个价位,
可以使所有符合成交条件的卖委托和买委托产生最大成
交量共 1500 股,则 19.68 元被定为成交价,所有买和卖
委托都以这个价成交,并揭示为开盘价

你可能感兴趣的:(算法)