class_docstr: Default analyzer which gives users basic trading information.
      
class_docstr_tok: ["Default","analyzer","which","gives","users","basic","trading","information","."]
docstr: Execute crossover analysis on the results so far.
  
  Args:
      new_result (dict): A dictionary containing the results of the informant and indicator
          analysis.
  
  Returns:
      list: A list of dictinaries containing the results of the analysis.
docstr_tok: ["Execute","crossover","analysis","on","the","results","so","far",".","Args",":","new_result","(","dict",")",":","A","dictionary","containing","the","results","of","the","informant","and","indicator","analysis",".","Returns",":","list",":","A","list","of","dictinaries","containing","the","results","of","the","analysis","."]
code: def _get_crossover_results(self, new_result):
      """Execute crossover analysis on the results so far.
  
      Args:
          new_result (dict): A dictionary containing the results of the informant and indicator
              analysis.
  
      Returns:
          list: A list of dictinaries containing the results of the analysis.
      """
  
      crossover_dispatcher = (
          self.strategy_analyzer.crossover_dispatcher()
      )
      results = {
          crossover: list() for crossover in self.crossover_conf.keys()
      }
  
      for crossover in self.crossover_conf:
          if crossover not in crossover_dispatcher:
              self.logger.warn(
                  "No such crossover %s, skipping.", crossover
              )
              continue
  
          for crossover_conf in self.crossover_conf[crossover]:
              if not crossover_conf["enabled"]:
                  self.logger.debug(
                      "%s is disabled, skipping.", crossover
                  )
                  continue
  
              key_indicator = new_result[
                  crossover_conf["key_indicator_type"]
              ][crossover_conf["key_indicator"]][
                  crossover_conf["key_indicator_index"]
              ]
              crossed_indicator = new_result[
                  crossover_conf["crossed_indicator_type"]
              ][crossover_conf["crossed_indicator"]][
                  crossover_conf["crossed_indicator_index"]
              ]
  
              dispatcher_args = {
                  "key_indicator": key_indicator["result"],
                  "key_signal": crossover_conf["key_signal"],
                  "key_indicator_index": crossover_conf[
                      "key_indicator_index"
                  ],
                  "crossed_indicator": crossed_indicator["result"],
                  "crossed_signal": crossover_conf["crossed_signal"],
                  "crossed_indicator_index": crossover_conf[
                      "crossed_indicator_index"
                  ],
              }
  
              results[crossover].append(
                  {
                      "result": crossover_dispatcher[crossover](
                          **dispatcher_args
                      ),
                      "config": crossover_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 6 for calling the Behaviour obj's underlying member method code with example usage: obj._get_crossover_results(new_result) and returns: results