@Override public void run() { try { while (true) { ExchangeEvent exchangeEvent = streamingExchangeService.getNextEvent(); if (exchangeEvent.getEventType() == ExchangeEventType.TICKER) { MarketDataRunnable.lastTicker = (Ticker) exchangeEvent.getPayload(); } else if (exchangeEvent.getEventType() == ExchangeEventType.TRADE) { Trade trade = (Trade) exchangeEvent.getPayload(); System.out.println(trade.toString()); } else if (exchangeEvent.getEventType() == ExchangeEventType.DEPTH) { OrderBookUpdate update = (OrderBookUpdate) exchangeEvent.getPayload(); if (update.getLimitOrder().getTransactionCurrency().equals("USD") && MarketDataRunnable.lastTicker != null) { MarketDataRunnable.book.update(update); if (MarketDataRunnable.book .getAsks() .get(0) .getLimitPrice() .compareTo(MarketDataRunnable.lastTicker.getAsk()) != 0) { System.out.println( "ERROR IN ORDERBOOK (ASKS) -> BOOK PRICE:" + MarketDataRunnable.book .getAsks() .get(0) .getLimitPrice() .getAmount() .doubleValue() + " TICKER PRICE:" + MarketDataRunnable.lastTicker.getAsk().getAmount().doubleValue()); } else { System.out.println( "ASKS BOOK OK!! " + MarketDataRunnable.lastTicker.getAsk().getAmount().doubleValue()); } if (MarketDataRunnable.book .getBids() .get(0) .getLimitPrice() .compareTo(MarketDataRunnable.lastTicker.getBid()) != 0) { System.out.println( "ERROR IN ORDERBOOK (BIDS) -> -> BOOK_PRICE:" + MarketDataRunnable.book .getBids() .get(0) .getLimitPrice() .getAmount() .doubleValue() + " TICKER_PRICE:" + MarketDataRunnable.lastTicker.getBid().getAmount().doubleValue()); } else { System.out.println( "BIDS BOOK OK!! " + MarketDataRunnable.lastTicker.getBid().getAmount().doubleValue()); } } } } } catch (InterruptedException e) { System.out.println("ERROR in Runnable!!!"); } }