in orderbook-sample/src/main/java/com/epam/deltix/orderbook/sample/OrderBook_03_ConsolidatedOrderBook.java [40:157]
public static void main(final String[] args) {
final String symbol = "BTC/USD";
final int marketDepth = 10;
final long[] exchangeIds = {
AlphanumericUtils.toAlphanumericUInt64("COINBASE"),
AlphanumericUtils.toAlphanumericUInt64("BINANCE")
};
// Step 1: create order book
final OrderBookOptions commonOpt = new OrderBookOptionsBuilder()
.symbol(symbol)
.quoteLevels(DataModelType.LEVEL_TWO)
.initialDepth(marketDepth)
.initialExchangesPoolSize(exchangeIds.length)
.updateMode(UpdateMode.WAITING_FOR_SNAPSHOT)
.build();
final OrderBookOptions opt = new OrderBookOptionsBuilder()
.parent(commonOpt)
.orderBookType(OrderBookType.CONSOLIDATED)
.build();
final OrderBook<OrderBookQuote> orderBook = OrderBookFactory.create(opt);
System.out.println("Hello! I'm " +
orderBook.getDescription() +
" for stock symbol: " +
orderBook.getSymbol().get() + "!");
// Step 2: feed it with updates
for (final long exchangeId : exchangeIds) {
orderBook.update(createL2VendorUpdate(marketDepth, exchangeId, symbol));
}
// Step 4: inspect order book state by iterator
System.out.println(System.lineSeparator());
Iterator<OrderBookQuote> iterator = orderBook.getMarketSide(QuoteSide.ASK).iterator();
while (iterator.hasNext()) {
final OrderBookQuote quote = iterator.next();
System.out.println(quote);
}
// Step 4.1: inspect order book state by iterator
for (final long exchangeId : exchangeIds) {
System.out.println(System.lineSeparator());
iterator = orderBook
.getExchanges()
.getById(exchangeId).get()
.getMarketSide(QuoteSide.ASK)
.iterator();
while (iterator.hasNext()) {
final OrderBookQuote quote = iterator.next();
System.out.println(quote);
}
}
// Step 4.2: inspect order book state by iterator
for (final long exchangeId : exchangeIds) {
System.out.println(System.lineSeparator());
iterator = orderBook
.getExchanges()
.getById(exchangeId).get()
.getMarketSide(QuoteSide.ASK)
.iterator((short) 5);
while (iterator.hasNext()) {
final OrderBookQuote quote = iterator.next();
System.out.println(quote);
}
}
// Step 4.3: inspect order book state by iterator
for (final long exchangeId : exchangeIds) {
System.out.println(System.lineSeparator());
iterator = orderBook
.getExchanges()
.getById(exchangeId).get()
.getMarketSide(QuoteSide.ASK)
.iterator((short) 3, (short) 5);
while (iterator.hasNext()) {
final OrderBookQuote quote = iterator.next();
System.out.println(quote);
}
}
// Step 5: inspect order book state by for each
System.out.println(System.lineSeparator());
orderBook.getMarketSide(QuoteSide.ASK).forEach((Predicate<OrderBookQuote>) OrderBook_03_ConsolidatedOrderBook::printOrderBookLevel);
System.out.println(System.lineSeparator());
for (final OrderBookQuote quote : orderBook.getMarketSide(QuoteSide.ASK)) {
System.out.println(quote);
}
final boolean isParallel = false;
orderBook.getMarketSide(QuoteSide.ASK)
.stream(isParallel)
.filter(q -> q.getPrice() > 10)
.forEach(System.out::println);
// Step 5.1: inspect order book state by for each with cookie
System.out.println(System.lineSeparator());
final PriceAccumulator priceAccumulator = new PriceAccumulator();
orderBook.getMarketSide(QuoteSide.ASK).forEach(OrderBook_03_ConsolidatedOrderBook::quoteViewAccumulatorAction, priceAccumulator);
// Step 6.1: inspect stock exchanges
final ExchangeList<? extends Exchange<OrderBookQuote>> exchangeList = orderBook.getExchanges();
exchangeList
.forEach(OrderBook_03_ConsolidatedOrderBook::quoteViewExchangeAccumulatorAction, priceAccumulator);
System.out.println("Stream API");
orderBook.getExchanges()
.stream()
.flatMap(orderBookQuoteExchange -> orderBookQuoteExchange.getMarketSide(QuoteSide.ASK).stream())
.filter(q -> Decimal64Utils.isGreater(q.getPrice(), Decimal64Utils.fromInt(15)))
.forEach(System.out::println);
}