retrieveTradingView = async (logger, symbols, interval) => {
  const params = {
    symbols: symbols.reduce((acc, s) => {
      acc.push(`BINANCE:${s}`);
      return acc;
    }, []),
    screener: 'CRYPTO',
    interval
  };

  try {
    const tradingviewUrl = `http://${config.get(
      'tradingview.host'
    )}:${config.get('tradingview.port')}`;

    const response = await axios.get(tradingviewUrl, {
      params,
      paramsSerializer:
        /* istanbul ignore next */
        p => qs.stringify(p, { arrayFormat: 'repeat' }),
      timeout: 20000 // timeout 20 seconds
    });
    const tradingViewResult = _.get(response.data, 'result', {});

    if (_.isEmpty(tradingViewResult) === true) {
      // If result is empty, do not process.
      return;
    }

    _.forIn(tradingViewResult, (result, symbolKey) => {
      // Get symbol
      const symbol = symbolKey.replace('BINANCE:', '');

      // Set saveLog as false by default
      let saveLog = false;

      const newRecommendation = _.get(result, 'summary.RECOMMENDATION', '');

      // If new recommendation is different than previous recommendation,
      if (
        _.get(
          lastTradingView,
          `${symbol}:${interval}.summary.RECOMMENDATION`,
          ''
        ) !== newRecommendation
      ) {
        // Then saveLog as true
        saveLog = true;
      }

      // If recommendation is retrieved,
      if (newRecommendation !== '') {
        logger.info(
          { symbol, interval, data: result, saveLog },
          `The TradingView technical analysis recommendation for ${symbol}:${interval} is "${_.get(
            result,
            'summary.RECOMMENDATION'
          )}".`
        );

        lastTradingView[`${symbol}:${interval}`] = result;

        cache
          .hset(
            'trailing-trade-tradingview',
            `${symbol}:${interval}`,
            JSON.stringify({
              request: {
                symbol,
                screener: 'CRYPTO',
                exchange: 'BINANCE',
                interval
              },
              result
            })
          )
          .catch(err =>
            handleError(logger, `Cache Trading View - ${symbol}`, err)
          );
      } else {
        logger.info(
          { symbol, data: result, saveLog },
          `The TradingView technical analysis recommendation for ${symbol} could not be retrieved.`
        );
      }
    });
  } catch (err) {
    logger.error(
      { err, saveLog: true },
      'Error occurred while retrieving TradingView technical analysis...'
    );
  }
}
Retrieve trading view for symbols per interval

@param {*} logger
@param {*} symbols
@param {*} interval
@returns