104 lines
2.3 KiB
Python
104 lines
2.3 KiB
Python
"""
|
|
This script was adapted from ccxt here:
|
|
https://github.com/ccxt/ccxt/blob/master/examples/py/arbitrage-pairs.py
|
|
"""
|
|
import os
|
|
import sys
|
|
import traceback
|
|
|
|
root = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
sys.path.append(root + '/python')
|
|
|
|
import ccxt # noqa: E402
|
|
|
|
|
|
def style(s, style):
|
|
return style + s + '\033[0m'
|
|
|
|
|
|
def green(s):
|
|
return style(s, '\033[92m')
|
|
|
|
|
|
def blue(s):
|
|
return style(s, '\033[94m')
|
|
|
|
|
|
def yellow(s):
|
|
return style(s, '\033[93m')
|
|
|
|
|
|
def red(s):
|
|
return style(s, '\033[91m')
|
|
|
|
|
|
def pink(s):
|
|
return style(s, '\033[95m')
|
|
|
|
|
|
def bold(s):
|
|
return style(s, '\033[1m')
|
|
|
|
|
|
def underline(s):
|
|
return style(s, '\033[4m')
|
|
|
|
|
|
def dump(*args):
|
|
print(' '.join([str(arg) for arg in args]))
|
|
|
|
|
|
def print_supported_exchanges():
|
|
dump('Supported exchanges:', green(', '.join(ccxt.exchanges)))
|
|
|
|
|
|
try:
|
|
|
|
if len(sys.argv) < 2:
|
|
dump("Usage: python " + sys.argv[0], green('id'))
|
|
print_supported_exchanges()
|
|
sys.exit(1)
|
|
|
|
id = sys.argv[1] # get exchange id from command line arguments
|
|
|
|
# check if the exchange is supported by ccxt
|
|
exchange_found = id in ccxt.exchanges
|
|
|
|
if exchange_found:
|
|
dump('Instantiating', green(id), 'exchange')
|
|
|
|
# instantiate the exchange by id
|
|
exchange = getattr(ccxt, id)({
|
|
# 'proxy':'https://cors-anywhere.herokuapp.com/',
|
|
})
|
|
|
|
# load all markets from the exchange
|
|
markets = exchange.load_markets()
|
|
|
|
# output a list of all market symbols
|
|
dump(green(id), 'has', len(exchange.symbols), 'symbols:', exchange.symbols)
|
|
|
|
tuples = list(ccxt.Exchange.keysort(markets).items())
|
|
|
|
# debug
|
|
for (k, v) in tuples:
|
|
print(v)
|
|
|
|
# output a table of all markets
|
|
dump(pink('{:<15} {:<15} {:<15} {:<15}'.format('id', 'symbol', 'base', 'quote')))
|
|
|
|
for (k, v) in tuples:
|
|
dump('{:<15} {:<15} {:<15} {:<15}'.format(v['id'], v['symbol'], v['base'], v['quote']))
|
|
|
|
else:
|
|
|
|
dump('Exchange ' + red(id) + ' not found')
|
|
print_supported_exchanges()
|
|
|
|
except Exception as e:
|
|
dump('[' + type(e).__name__ + ']', str(e))
|
|
dump(traceback.format_exc())
|
|
dump("Usage: python " + sys.argv[0], green('id'))
|
|
print_supported_exchanges()
|
|
sys.exit(1)
|