execute = async (funcLogger, rawData) => {
  const data = rawData;

  const {
    globalConfiguration: { symbols }
  } = data;

  const logger = funcLogger.child({ symbols });

  logger.info('get-tradingview started');

  if (_.isEmpty(symbols)) {
    logger.info('No symbols configured. Do not process get-tradingview');
    return data;
  }

  // Should get all symbol configurations and make group call per interval
  const cachedSymbolConfigurations = await cache.hgetall(
    'trailing-trade-configurations:',
    'trailing-trade-configurations:*'
  );

  const cacheTradingViews = _.map(
    await cache.hgetall(
      'trailing-trade-tradingview:',
      'trailing-trade-tradingview:*'
    ),
    tradingView => JSON.parse(tradingView)
  );

  const tradingViewRequests = {};

  // eslint-disable-next-line no-restricted-syntax
  for (const symbol of Object.keys(cachedSymbolConfigurations)) {
    // Do not handle if it's a global configuration
    if (symbol === 'global') {
      // eslint-disable-next-line no-continue
      continue;
    }

    const symbolConfiguration = JSON.parse(cachedSymbolConfigurations[symbol]);

    const tradingViews = _.get(
      symbolConfiguration,
      'botOptions.tradingViews',
      []
    );

    const tradingViewIntervals = [];
    tradingViews.forEach(tradingView => {
      const { interval } = tradingView;

      tradingViewIntervals.push(interval);
      if (tradingViewRequests[interval] === undefined) {
        tradingViewRequests[interval] = {
          symbols: [],
          interval
        };
      }
      tradingViewRequests[interval].symbols.push(symbol);
    });

    // Delete if tradingView interval is removed from symbol configuration
    cacheTradingViews
      .filter(tv => tv.request.symbol === symbol)
      .filter(
        tv => tradingViewIntervals.includes(tv.request.interval) === false
      )
      .forEach(tv =>
        cache.hdel(
          'trailing-trade-tradingview',
          `${tv.request.symbol}:${tv.request.interval}`
        )
      );
  }

  logger.info({ tradingViewRequests }, 'Requesting TradingView intervals');
  const promises = [];

  _.forIn(tradingViewRequests, async (request, _requestInterval) => {
    promises.push(
      retrieveTradingView(logger, _.uniq(request.symbols), request.interval)
    );
  });

  await Promise.all(promises);
  logger.info('get-tradingview completed');
  return data;
}
Get Tradingview indicators

@param {*} funcLogger
@param {*} rawData