Back to Ccxt

Live Tickers

wiki/examples/js/live-tickers.md

4.5.601.8 KB
Original Source
javascript
// @NO_AUTO_TRANSPILE
import asTable from 'as-table';
import ololog from 'ololog';
import ansicolor from 'ansicolor';
import ccxt from '../../js/ccxt.js';
ansicolor.nice;
const { noLocate } = ololog;
const log = noLocate;
let printSupportedExchanges = function () {
    log('Supported exchanges:', ccxt.exchanges.join(', ').green);
};
let printUsage = function () {
    log('Usage: node', process.argv[1], 'exchange'.green);
    printSupportedExchanges();
};
let printTickers = async (id) => {
    // check if the exchange is supported by ccxt
    let exchangeFound = ccxt.exchanges.indexOf(id) > -1;
    if (exchangeFound) {
        log('Instantiating', id.green, 'exchange');
        // instantiate the exchange by id
        let exchange = new ccxt[id]();
        // load all markets from the exchange
        let markets = await exchange.loadMarkets();
        while (true) {
            const tickers = await exchange.fetchTickers();
            log('--------------------------------------------------------');
            log(exchange.id.green, exchange.iso8601(exchange.milliseconds()));
            log('Fetched', Object.values(tickers).length.toString().green, 'tickers:');
            log(asTable.configure({ delimiter: ' | '.dim, right: true })(ccxt.sortBy(Object.values(tickers), 'quoteVolume', true)
                .slice(0, 20)
                .map(ticker => ({
                symbol: ticker['symbol'],
                price: ticker['last'].toFixed(8),
                datetime: ticker['datetime'],
            }))));
        }
    }
    else {
        log('Exchange ' + id.red + ' not found');
        printSupportedExchanges();
    }
};
(async function main() {
    if (process.argv.length > 2) {
        const id = process.argv[2];
        await printTickers(id);
    }
    else {
        printUsage();
    }
    process.exit();
})();