class_docstr: Default analyzer which gives users basic trading information.
      
class_docstr_tok: ["Default","analyzer","which","gives","users","basic","trading","information","."]
docstr: Execute the indicator analysis on a particular exchange and pair.
  
  Args:
      exchange (str): The exchange to get the indicator results for.
      market_pair (str): The pair to get the market pair results for.
  
  Returns:
      list: A list of dictinaries containing the results of the analysis.
docstr_tok: ["Execute","the","indicator","analysis","on","a","particular","exchange","and","pair",".","Args",":","exchange","(","str",")",":","The","exchange","to","get","the","indicator","results","for",".","market_pair","(","str",")",":","The","pair","to","get","the","market","pair","results","for",".","Returns",":","list",":","A","list","of","dictinaries","containing","the","results","of","the","analysis","."]
code: def _get_indicator_results(self, exchange, market_pair):
      """Execute the indicator analysis on a particular exchange and pair.
  
      Args:
          exchange (str): The exchange to get the indicator results for.
          market_pair (str): The pair to get the market pair results for.
  
      Returns:
          list: A list of dictinaries containing the results of the analysis.
      """
  
      indicator_dispatcher = (
          self.strategy_analyzer.indicator_dispatcher()
      )
      results = {
          indicator: list() for indicator in self.indicator_conf.keys()
      }
      historical_data_cache = dict()
  
      for indicator in self.indicator_conf:
          if indicator not in indicator_dispatcher:
              self.logger.warn(
                  "No such indicator %s, skipping.", indicator
              )
              continue
  
          for indicator_conf in self.indicator_conf[indicator]:
              if indicator_conf["enabled"]:
                  candle_period = indicator_conf["candle_period"]
              else:
                  self.logger.debug(
                      "%s is disabled, skipping.", indicator
                  )
                  continue
  
              if candle_period not in historical_data_cache:
                  historical_data_cache[
                      candle_period
                  ] = self._get_historical_data(
                      market_pair, exchange, candle_period
                  )
  
              if historical_data_cache[candle_period]:
                  analysis_args = {
                      "historical_data": historical_data_cache[
                          candle_period
                      ],
                      "signal": indicator_conf["signal"],
                      "hot_thresh": indicator_conf["hot"],
                      "cold_thresh": indicator_conf["cold"],
                  }
  
                  if "period_count" in indicator_conf:
                      analysis_args["period_count"] = indicator_conf[
                          "period_count"
                      ]
  
                  results[indicator].append(
                      {
                          "result": self._get_analysis_result(
                              indicator_dispatcher,
                              indicator,
                              analysis_args,
                              market_pair,
                          ),
                          "config": indicator_conf,
                      }
                  )
      return results
  
file_path: Crypto-Signal/app/behaviour.py
imports: import json
  import traceback
  from copy import deepcopy
  import structlog
  from ccxt import ExchangeError
  from tenacity import RetryError
  from analysis import StrategyAnalyzer
  from outputs import Output
label_desc: Use image node_id 4 for calling the Behaviour obj's underlying member method code with example usage: obj._get_indicator_results(exchange, market_pair) and returns: results