class_docstr: Default analyzer which gives users basic trading information.
      
class_docstr_tok: ["Default","analyzer","which","gives","users","basic","trading","information","."]
docstr: The analyzer entrypoint
  
  Args:
      market_pairs (list): List of symbol pairs to operate on, if empty get all pairs.
      output_mode (str): Which console output mode to use.
docstr_tok: ["The","analyzer","entrypoint","Args",":","market_pairs","(","list",")",":","List","of","symbol","pairs","to","operate","on",",","if","empty","get","all","pairs",".","output_mode","(","str",")",":","Which","console","output","mode","to","use","."]
code: def run(self, market_pairs, output_mode):
      """The analyzer entrypoint
  
      Args:
          market_pairs (list): List of symbol pairs to operate on, if empty get all pairs.
          output_mode (str): Which console output mode to use.
      """
  
      self.logger.info("Starting default analyzer...")
  
      if market_pairs:
          self.logger.info("Found configured markets: %s", market_pairs)
      else:
          self.logger.info(
              "No configured markets, using all available on exchange."
          )
  
      market_data = self.exchange_interface.get_exchange_markets(
          markets=market_pairs
      )
  
      self.logger.info(
          "Using the following exchange(s): %s",
          list(market_data.keys()),
      )
  
      new_result = self._test_strategies(market_data, output_mode)
  
      self.notifier.notify_all(new_result)
  
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 2 for calling the Behaviour obj's underlying member method code with example usage: obj.run(market_pairs, output_mode) without return types