private static String[] registerSemiRandomTrades(StockExchange stockExchange) { String[] symbols = new String[] {"TEA", "POP", "ALE", "JIN", "JOE"}; String[] prices = new String[] {"4.0000", "6.0000", "0.5000", "1.0000", "20.0000"}; long[] quantities = new long[] {100, 200, 300, 100, 100, 200}; TradeType[] types = new TradeType[] {BUY, BUY, SELL, SELL, SELL, BUY}; Random random = new Random(System.nanoTime()); for (int i = 0; i < symbols.length; i++) { for (int j = 0; j < types.length; j++) { BigDecimal avgPrice = new BigDecimal(prices[i]); double var = avgPrice.doubleValue() * 0.05; double price = avgPrice.doubleValue() + (var * random.nextDouble() - var / 2); BigDecimal bdPrice = new BigDecimal(price).setScale(StockExchange.PRECISION, RoundingMode.HALF_DOWN); switch (types[j]) { case BUY: stockExchange.buy(symbols[i], quantities[i], bdPrice); break; case SELL: stockExchange.sell(symbols[i], quantities[i], bdPrice); break; } } } return symbols; }
private static void printStockInfo(StockExchange stockExchange, String[] symbols) { System.out.printf(" %7s %7s %9s\n", "Price", "Yield", "P/E Rat"); for (int i = 0; i < symbols.length; i++) { System.out.printf( "%3s %7s %7s%% %9s\n", symbols[i], stockExchange.calculateStockPrice(symbols[i]), stockExchange.calculateDividentYield(symbols[i]).scaleByPowerOfTen(2), stockExchange.calculatePERatio(symbols[i])); } System.out.printf("\n--- All share index: %7s\n", stockExchange.calculateAllShareIndex()); }