public List<AlgorithmicTrade> runStrategy(Strategy strategy, String volume, Integer lookBackPeriod, Double threshold) {
		
		List<AlgorithmicTrade> tradeList = new ArrayList<AlgorithmicTrade>();
		TradeSignalGenerator signalGenerator = new TradeSignalGenerator(bidList, askList, this.tradeList);
		if (Strategy.RANDOM == strategy) {
			tradeList.addAll(matchTrades(signalGenerator.newRandomBid(volume)));
			tradeList.addAll(matchTrades(signalGenerator.newRandomAsk(volume)));
		} else if (Strategy.MOMENTUM == strategy) {
			tradeList.addAll(matchTrades(signalGenerator.newMomentumOrders(volume, lookBackPeriod, threshold)));
		} else if (Strategy.MEAN_REVERSION == strategy) {
			tradeList.addAll(matchTrades(signalGenerator.newMeanReversionOrders(volume, lookBackPeriod, threshold)));
		}
		
		return tradeList;
	}