wiki/examples/js/symbols.md
// @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();
})();