async def _init_exchanges(self): self.backtesting = await backtesting_api.initialize_backtesting( self.backtesting_config, exchange_ids=self.exchange_manager_ids, matrix_id=self.matrix_id, data_files=self.backtesting_files) # modify_backtesting_channels before creating exchanges as they require the current backtesting time to # initialize await backtesting_api.adapt_backtesting_channels( self.backtesting, self.backtesting_config, importers.ExchangeDataImporter, run_on_common_part_only=self.run_on_common_part_only, start_timestamp=self.start_timestamp, end_timestamp=self.end_timestamp) for exchange_class_string in self.symbols_to_create_exchange_classes.keys( ): exchange_builder = trading_api.create_exchange_builder(self.backtesting_config, exchange_class_string) \ .has_matrix(self.matrix_id) \ .use_tentacles_setup_config(self.tentacles_setup_config) \ .set_bot_id(self.bot_id) \ .is_simulated() \ .is_rest_only() \ .is_backtesting(self.backtesting) try: await exchange_builder.build() finally: # always save exchange manager ids and backtesting instances self.exchange_manager_ids.append( trading_api.get_exchange_manager_id( exchange_builder.exchange_manager))
def connect(exchange_name): if exchange_name not in cli.exchanges: exchange_builder = api.create_exchange_builder(cli.get_config(), exchange_name) cli.exchanges[exchange_name] = { "exchange_builder": exchange_builder, "exchange_thread": threading.Thread(target=cli_tools.start_cli_exchange, args=(exchange_builder, )) } cli.exchanges[exchange_name]["exchange_thread"].start() else: click.echo("Already connected to this exchange", err=True) return click.echo(f"Connected to {exchange_name}")