コード例 #1
0
    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()
コード例 #2
0
    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()
コード例 #3
0
 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)