def main(sysargv: List[str]) -> None: """ This function will initiate the bot and start the trading loop. :return: None """ arguments = Arguments( sysargv, 'Free, open source crypto trading bot' ) args = arguments.get_parsed_arg() # A subcommand has been issued. # Means if Backtesting or Hyperopt have been called we exit the bot if hasattr(args, 'func'): args.func(args) return freqtrade = None return_code = 1 try: # Load and validate configuration config = Configuration(args).get_config() # Init the bot freqtrade = FreqtradeBot(config) state = None while True: state = freqtrade.worker(old_state=state) if state == State.RELOAD_CONF: freqtrade = reconfigure(freqtrade, args) except KeyboardInterrupt: logger.info('SIGINT received, aborting ...') return_code = 0 except OperationalException as e: logger.error(str(e)) return_code = 2 except BaseException: logger.exception('Fatal exception!') finally: if freqtrade: freqtrade.rpc.send_msg({ 'type': RPCMessageType.STATUS_NOTIFICATION, 'status': 'process died' }) freqtrade.cleanup() sys.exit(return_code)
def main(sysargv: List[str]) -> None: """ This function will initiate the bot and start the trading loop. :return: None """ arguments = Arguments( sysargv, 'Simple High Frequency Trading Bot for crypto currencies' ) args = arguments.get_parsed_arg() # A subcommand has been issued. # Means if Backtesting or Hyperopt have been called we exit the bot if hasattr(args, 'func'): args.func(args) return freqtrade = None return_code = 1 try: # Load and validate configuration config = Configuration(args).get_config() # Init the bot freqtrade = FreqtradeBot(config) state = None while 1: state = freqtrade.worker(old_state=state) except KeyboardInterrupt: logger.info('SIGINT received, aborting ...') return_code = 0 except BaseException: logger.exception('Fatal exception!') finally: if freqtrade: freqtrade.clean() sys.exit(return_code)