def _initialize_markets(self, market_names: List[Tuple[str, List[str]]]): # aggregate trading_pairs if there are duplicate markets for market_name, trading_pairs in market_names: if market_name not in self.market_trading_pairs_map: self.market_trading_pairs_map[market_name] = [] for hb_trading_pair in trading_pairs: self.market_trading_pairs_map[market_name].append( hb_trading_pair) for connector_name, trading_pairs in self.market_trading_pairs_map.items( ): conn_setting = CONNECTOR_SETTINGS[connector_name] if global_config_map.get( "paper_trade_enabled" ).value and conn_setting.type == ConnectorType.Exchange: try: connector = create_paper_trade_market( connector_name, trading_pairs) except Exception: raise paper_trade_account_balance = global_config_map.get( "paper_trade_account_balance").value for asset, balance in paper_trade_account_balance.items(): connector.set_balance(asset, balance) else: Security.update_config_map(global_config_map) keys = { key: config.value for key, config in global_config_map.items() if key in conn_setting.config_keys } init_params = conn_setting.conn_init_parameters(keys) init_params.update(trading_pairs=trading_pairs, trading_required=self._trading_required) if conn_setting.use_ethereum_wallet: ethereum_rpc_url = global_config_map.get( "ethereum_rpc_url").value # Todo: Hard coded this execption for now until we figure out how to handle all ethereum connectors. if connector_name in [ "balancer", "uniswap", "perpetual_finance" ]: private_key = get_eth_wallet_private_key() init_params.update(wallet_private_key=private_key, ethereum_rpc_url=ethereum_rpc_url) else: assert self.wallet is not None init_params.update(wallet=self.wallet, ethereum_rpc_url=ethereum_rpc_url) connector_class = get_connector_class(connector_name) connector = connector_class(**init_params) self.markets[connector_name] = connector self.markets_recorder = MarketsRecorder( self.trade_fill_db, list(self.markets.values()), self.strategy_file_name, self.strategy_name, ) self.markets_recorder.start()
def _initialize_markets(self, market_names: List[Tuple[str, List[str]]]): # aggregate trading_pairs if there are duplicate markets for market_name, trading_pairs in market_names: if market_name not in self.market_trading_pairs_map: self.market_trading_pairs_map[market_name] = [] for hb_trading_pair in trading_pairs: self.market_trading_pairs_map[market_name].append( hb_trading_pair) for connector_name, trading_pairs in self.market_trading_pairs_map.items( ): conn_setting = AllConnectorSettings.get_connector_settings( )[connector_name] if connector_name.endswith( "paper_trade" ) and conn_setting.type == ConnectorType.Exchange: connector = create_paper_trade_market(conn_setting.parent_name, trading_pairs) paper_trade_account_balance = global_config_map.get( "paper_trade_account_balance").value if paper_trade_account_balance is not None: for asset, balance in paper_trade_account_balance.items(): connector.set_balance(asset, balance) else: Security.update_config_map(global_config_map) keys = { key: config.value for key, config in global_config_map.items() if key in conn_setting.config_keys } init_params = conn_setting.conn_init_parameters(keys) init_params.update(trading_pairs=trading_pairs, trading_required=self._trading_required) connector_class = get_connector_class(connector_name) connector = connector_class(**init_params) self.markets[connector_name] = connector self.markets_recorder = MarketsRecorder( self.trade_fill_db, list(self.markets.values()), self.strategy_file_name, self.strategy_name, ) self.markets_recorder.start()
async def update_all_secure_configs(self # type: HummingbotApplication ): await Security.wait_til_decryption_done() Security.update_config_map(global_config_map) if self.strategy_config_map is not None: Security.update_config_map(self.strategy_config_map)