private List<Trade> auctionOrderList() {
		List<Trade> tra = new ArrayList<Trade>();
		while ( buyOrderQueue.size() != 0 && sellOrderQueue.size() != 0 && buyOrderQueue.get(0).getPrice() >= sellOrderQueue.get(0).getPrice() ) 
		{
			Order buyOrder = buyOrderQueue.get(0);
			Order sellOrder = sellOrderQueue.get(0);
			Trade tempTrade = new Trade();
			
			// set the price of tradeOrder
			if ( buyOrder.getCreateTime() <= sellOrder.getCreateTime() ) {
				tempTrade.setTradePrice(buyOrder.getPrice());
				synchronized (stockPrice) {
					stockPrice = buyOrder.getPrice();
				}
			} else {
				tempTrade.setTradePrice(sellOrder.getPrice());
				synchronized (stockPrice) {
					stockPrice = sellOrder.getPrice();
				}
			}
			// set the Ids of tradeOrder
			tempTrade.setBuyId(buyOrder.getAgentId());
			tempTrade.setBuyOrderId(buyOrder.getId());
			tempTrade.setSellId(sellOrder.getAgentId());
			tempTrade.setSellOrderId(sellOrder.getId());

			tempTrade.setTradeTime(System.currentTimeMillis());
			// set the volume of tradeOrder

			if (buyOrder.getVolume() == sellOrder.getVolume()) {
				tempTrade.setTradeVolume(buyOrder.getVolume());
				tra.add(tempTrade);
				sellOrderQueue.remove(0);
				buyOrderQueue.remove(0);
			} else if (buyOrder.getVolume() > sellOrder.getVolume()) {
				tempTrade.setTradeVolume(sellOrder.getVolume());
				tra.add(tempTrade);
				sellOrderQueue.remove(0);
				buyOrderQueue.get(0).setVolume( buyOrder.getVolume() - sellOrder.getVolume() );
			} else {
				tempTrade.setTradeVolume(buyOrder.getVolume());
				tra.add(tempTrade);
				sellOrderQueue.get(0).setVolume( sellOrder.getVolume() - buyOrder.getVolume() );
				buyOrderQueue.remove(0);
			}
		}
		return tra;
	}