diff --git a/environment.yml b/environment.yml index b942770b..120f84bd 100644 --- a/environment.yml +++ b/environment.yml @@ -15,8 +15,10 @@ dependencies: - docker-py - pip - pip: - - hummingbot==20250715 - - msgpack>=1.0.5 + - hummingbot + - pandas==2.2.3 + - pandas-ta<0.4.0 + - msgpack>=1.0.5 - flake8 - isort - pre-commit diff --git a/services/market_data_feed_manager.py b/services/market_data_feed_manager.py index 115734a3..8c102ed2 100644 --- a/services/market_data_feed_manager.py +++ b/services/market_data_feed_manager.py @@ -184,7 +184,7 @@ async def get_trading_rules(self, connector_name: str, trading_pairs: Optional[L """ try: # Access connector through MarketDataProvider's _rate_sources LazyDict - connector = self.market_data_provider._rate_sources[connector_name] + connector = self.market_data_provider._non_trading_connectors[connector_name] # Check if trading rules are initialized, if not update them if not connector.trading_rules or len(connector.trading_rules) == 0: @@ -252,7 +252,7 @@ async def get_prices(self, connector_name: str, trading_pairs: List[str]) -> Dic """ try: # Access connector through MarketDataProvider's _rate_sources LazyDict - connector = self.market_data_provider._rate_sources[connector_name] + connector = self.market_data_provider._non_trading_connectors[connector_name] # Get last traded prices prices = await connector.get_last_traded_prices(trading_pairs) @@ -279,8 +279,8 @@ async def get_funding_info(self, connector_name: str, trading_pair: str) -> Dict Dictionary containing funding information """ try: - # Access connector through MarketDataProvider's _rate_sources LazyDict - connector = self.market_data_provider._rate_sources[connector_name] + # Access connector through MarketDataProvider's _non_trading_connectors LazyDict + connector = self.market_data_provider._non_trading_connectors[connector_name] # Check if this is a perpetual connector and has funding info support if hasattr(connector, '_orderbook_ds') and connector._orderbook_ds: @@ -322,8 +322,8 @@ async def get_order_book_data(self, connector_name: str, trading_pair: str, dept Dictionary containing bid and ask data """ try: - # Access connector through MarketDataProvider's _rate_sources LazyDict - connector = self.market_data_provider._rate_sources[connector_name] + # Access connector through MarketDataProvider's _non_trading_connectors LazyDict + connector = self.market_data_provider._non_trading_connectors[connector_name] # Access the order book data source if hasattr(connector, '_orderbook_ds') and connector._orderbook_ds: @@ -365,8 +365,8 @@ async def get_order_book_query_result(self, connector_name: str, trading_pair: s try: current_time = time.time() - # Access connector through MarketDataProvider's _rate_sources LazyDict - connector = self.market_data_provider._rate_sources[connector_name] + # Access connector through MarketDataProvider's _non_trading_connectors LazyDict + connector = self.market_data_provider._non_trading_connectors[connector_name] # Access the order book data source if hasattr(connector, '_orderbook_ds') and connector._orderbook_ds: diff --git a/utils/connector_manager.py b/utils/connector_manager.py index 6ae0bad6..5b8e2280 100644 --- a/utils/connector_manager.py +++ b/utils/connector_manager.py @@ -7,9 +7,8 @@ # Create module-specific logger logger = logging.getLogger(__name__) -from hummingbot.client.config.client_config_map import ClientConfigMap from hummingbot.client.config.config_crypt import ETHKeyFileSecretManger -from hummingbot.client.config.config_helpers import ClientConfigAdapter, ReadOnlyClientConfigAdapter, get_connector_class +from hummingbot.client.config.config_helpers import get_connector_class from hummingbot.client.settings import AllConnectorSettings from hummingbot.connector.connector_base import ConnectorBase from hummingbot.core.data_type.common import OrderType, PositionAction, PositionMode, TradeType @@ -64,7 +63,6 @@ def _create_connector(self, account_name: str, connector_name: str): :return: The connector object. """ BackendAPISecurity.login_account(account_name=account_name, secrets_manager=self.secrets_manager) - client_config_map = ClientConfigAdapter(ClientConfigMap()) conn_setting = AllConnectorSettings.get_connector_settings()[connector_name] keys = BackendAPISecurity.api_keys(connector_name) @@ -72,13 +70,10 @@ def _create_connector(self, account_name: str, connector_name: str): logger.info(f"Creating connector {connector_name} for account {account_name}") logger.debug(f"API keys retrieved: {list(keys.keys()) if keys else 'None'}") - read_only_config = ReadOnlyClientConfigAdapter.lock_config(client_config_map) - init_params = conn_setting.conn_init_parameters( trading_pairs=[], trading_required=True, api_keys=keys, - client_config_map=read_only_config, ) # Debug logging @@ -324,6 +319,9 @@ async def _update_connector_state(self, connector: ConnectorBase, connector_name This function can be called both during initialization and periodically. """ try: + # Update current timestamp + connector._set_current_timestamp(time.time()) + # Update balances await connector._update_balances()