Back to Ccxt

Symbols

wiki/examples/js/symbols.md

4.5.603.0 KB
Original Source
javascript
// @NO_AUTO_TRANSPILE
import ccxt from '../../js/ccxt.js';
import fs from 'fs';
import ololog from 'ololog';
import ansicolor from 'ansicolor';
import asTable from 'as-table';
const { noLocate } = ololog;
const log = noLocate;
ansicolor.nice;
const table = asTable.configure({ delimiter: ' | ' }), verbose = process.argv.includes('--verbose'), debug = process.argv.includes('--debug');
//-----------------------------------------------------------------------------
let printSupportedExchanges = function () {
    log('Supported exchanges:', ccxt.exchanges.join(', ').green);
};
let printUsage = function () {
    log('Usage: node', process.argv[1], 'id'.green);
    printSupportedExchanges();
};
let printSymbols = async (id) => {
    // check if the exchange is supported by ccxt
    let exchangeFound = ccxt.exchanges.indexOf(id) > -1;
    if (exchangeFound) {
        log('Instantiating', id.green, 'exchange');
        // set up keys and settings, if any
        const keysGlobal = 'keys.json';
        const keysLocal = 'keys.local.json';
        let keysFile = fs.existsSync(keysLocal) ? keysLocal : (fs.existsSync(keysGlobal) ? keysGlobal : false);
        let settings = keysFile ? (require('../../' + keysFile)[id] || {}) : {};
        // instantiate the exchange by id
        let exchange = new ccxt[id](ccxt.extend({
            verbose,
            // 'proxy': 'https://cors-anywhere.herokuapp.com/',
            // 'proxy': 'https://crossorigin.me/',
        }, settings));
        // Object.assign (exchange, settings)
        // load all markets from the exchange
        let markets = await exchange.loadMarkets();
        // debug log
        if (debug)
            Object.values(markets).forEach(market => log(market));
        log("\nSymbols:\n");
        // make a table of all markets
        const marketsList = ccxt.sortBy(Object.values(markets), 'symbol')
            .map(market => ccxt.omit(market, ['info', 'limits', 'precision', 'fees']));
        let tableOutput = table(marketsList);
        log(tableOutput);
        log("\n---------------------------------------------------------------");
        log("\nCurrencies:\n");
        // make a table of all currencies
        const currenciesList = ccxt.sortBy(Object.values(exchange.currencies), 'code')
            .map(currency => ccxt.omit(currency, ['info', 'limits']));
        const currenciesTable = table(currenciesList);
        log(currenciesTable);
        log("\n---------------------------------------------------------------");
        // output a summary
        log(id.green, 'has', exchange.symbols.length.toString().yellow, 'symbols and', Object.keys(exchange.currencies).length.toString().yellow, "currencies\n");
    }
    else {
        log('Exchange ' + id.red + ' not found');
        printSupportedExchanges();
    }
};
(async function main() {
    if (process.argv.length > 2) {
        let id = process.argv[2];
        await printSymbols(id);
    }
    else {
        printUsage();
    }
    process.exit();
})();