CCXT
Java Examples

WatchOrderBook

WatchOrderBook — CCXT Java code example.

package examples;

import io.github.ccxt.exchanges.pro.Binance;
import io.github.ccxt.types.OrderBook;

import java.util.List;

/**
 * Watch real-time order book updates via WebSocket.
 * Each call to watchOrderBook resolves on the next delta update.
 *
 * Usage:
 *   cd java && ./gradlew :examples:run -PmainClass=examples.WatchOrderBook
 *   cd java && ./gradlew :examples:run -PmainClass=examples.WatchOrderBook --args="ETH/USDT"
 */
public class WatchOrderBook {

    public static void main(String[] args) throws Exception {
        String symbol = args.length > 0 ? args[0] : "BTC/USDT";

        Binance exchange = new Binance();
        exchange.verbose = false;

        System.out.println("Loading markets...");
        exchange.loadMarkets(false);
        System.out.println("Watching " + symbol + " order book (10 updates)...\n");

        for (int i = 0; i < 10; i++) {
            OrderBook ob = exchange.watchOrderBook(symbol);

            List<List<Double>> bids = ob.bids;
            List<List<Double>> asks = ob.asks;

            System.out.println("=== Update #" + (i + 1) + " (ts=" + ob.timestamp + ") ===");
            System.out.printf("%-20s | %-20s%n", "BIDS (price x size)", "ASKS (price x size)");
            System.out.println("-".repeat(43));

            int rows = Math.min(5, Math.min(bids.size(), asks.size()));
            for (int j = 0; j < rows; j++) {
                List<Double> bid = bids.get(j);
                List<Double> ask = asks.get(j);
                System.out.printf("%10s x %-8s | %10s x %-8s%n",
                        bid.get(0), bid.get(1),
                        ask.get(0), ask.get(1));
            }

            if (!bids.isEmpty() && !asks.isEmpty()) {
                double bestBid = bids.get(0).get(0);
                double bestAsk = asks.get(0).get(0);
                double spread = bestAsk - bestBid;
                System.out.printf("Spread: %.2f  |  Total bids: %d  |  Total asks: %d%n%n",
                        spread, bids.size(), asks.size());
            }
        }

        System.out.println("Done!");
        System.exit(0);
    }
}