def _set_exchange_type_details(exchange_builder, config, backtesting): # real, simulator, backtesting if util.is_trader_enabled(config): exchange_builder.is_real() elif util.is_trader_simulator_enabled(config): exchange_builder.is_simulated() if backtesting is not None: exchange_builder.is_backtesting(backtesting) # use exchange sandbox exchange_builder.is_sandboxed(config[commons_constants.CONFIG_EXCHANGES][ exchange_builder.exchange_name].get( commons_constants.CONFIG_EXCHANGE_SANDBOXED, False)) # exchange trading type if config[commons_constants.CONFIG_EXCHANGES][ exchange_builder.exchange_name].get( commons_constants.CONFIG_EXCHANGE_FUTURE, False): exchange_builder.is_future(True) elif config[commons_constants.CONFIG_EXCHANGES][ exchange_builder.exchange_name].get( commons_constants.CONFIG_EXCHANGE_MARGIN, False): exchange_builder.is_margin(True) elif config[commons_constants.CONFIG_EXCHANGES][ exchange_builder.exchange_name].get( commons_constants.CONFIG_EXCHANGE_SPOT, True): # Use spot trading as default trading type exchange_builder.is_spot_only(True) # rest, web socket if config[commons_constants.CONFIG_EXCHANGES][ exchange_builder.exchange_name].get( commons_constants.CONFIG_EXCHANGE_REST_ONLY, False): exchange_builder.is_rest_only()
async def _build_trader(self): try: # check traders activation if not util.is_trader_enabled(self.config) and not util.is_trader_simulator_enabled(self.config): raise ValueError(f"No trader simulator nor real trader activated on " f"{self.exchange_manager.exchange_name}") await self.exchange_manager.trader.initialize() except ValueError as e: self.logger.error(f"An error occurred when creating trader : {e}") raise e
async def create(self, trading_tentacles_path=CONFIG_TRADING_FILE_PATH): await self.exchange_manager.initialize() # set sandbox mode if not self.is_backtesting: self.exchange_manager.exchange.client.setSandboxMode( self.is_sandboxed) if not self.is_simulated: self.trader = Trader(self.config, self.exchange_manager) else: self.trader = TraderSimulator(self.config, self.exchange_manager) try: # check traders activation if not is_trader_enabled( self.config) and not is_trader_simulator_enabled( self.config): raise ValueError( f"No trader simulator nor real trader activated on {self.exchange_manager.exchange.name}" ) # initialize trader await self.trader.initialize() self.exchange_manager.trader = self.trader init_trading_mode_config(self.config, trading_tentacles_path) await create_trading_mode(self.config, self.exchange_manager) # add to global exchanges Exchanges.instance().add_exchange(self.exchange_manager) except Exception as e: self.logger.error( f"An error occurred when creating trader or initializing trading mode : " ) raise e
def is_real_trading(profile): if trading_util.is_trader_enabled(profile.config): return True return False
def is_trader_enabled_in_config(config) -> bool: return util.is_trader_enabled(config)
def enabled(cls, config): return is_trader_enabled(config)
def get_enabled_trader(profile): if trading_util.is_trader_enabled(profile.config): return "Real trading" if trading_util.is_trader_simulator_enabled(profile.config): return "Simulated trading" return ""