docs: async function (exchange, symbol) {
  
      try {
  
          await exchange.loadMarkets ()
  
          if (symbol in exchange.markets) {
  
              let ticker = await exchange.fetchTicker (symbol)
  
              log (exchange.id.green, symbol.green, 'ticker',
                  ticker['datetime'],
                  'high: '    + human_value (ticker['high']),
                  'low: '     + human_value (ticker['low']),
                  'bid: '     + human_value (ticker['bid']),
                  'ask: '     + human_value (ticker['ask']),
                  'volume: '  + human_value (ticker['quoteVolume']))
          } else {
  
              // do nothing or throw an error
              log.bright.yellow (exchange.id + ' does not have ' + symbol)
          }
  
      } catch (e) {
  
          if (e instanceof ccxt.DDoSProtection) {
              log.bright.yellow (exchange.id, '[DDoS Protection]')
          } else if (e instanceof ccxt.RequestTimeout) {
              log.bright.yellow (exchange.id, '[Request Timeout]')
          } else if (e instanceof ccxt.AuthenticationError) {
              log.bright.yellow (exchange.id, '[Authentication Error]')
          } else if (e instanceof ccxt.ExchangeNotAvailable) {
              log.bright.yellow (exchange.id, '[Exchange Not Available]')
          } else if (e instanceof ccxt.ExchangeError) {
              log.bright.yellow (exchange.id, '[Exchange Error]')
          } else if (e instanceof ccxt.NetworkError) {
              log.bright.yellow (exchange.id, '[Network Error]')
          } else {
              throw e
          }
      }
  }