async def _get_tools(): symbol = "BTC/USDT" config = load_test_config() config[commons_constants.CONFIG_SIMULATOR][commons_constants.CONFIG_STARTING_PORTFOLIO]["SUB"] = \ 0.000000000000000000005 config[commons_constants.CONFIG_SIMULATOR][commons_constants.CONFIG_STARTING_PORTFOLIO]["BNB"] = \ 0.000000000000000000005 config[commons_constants.CONFIG_SIMULATOR][ commons_constants.CONFIG_STARTING_PORTFOLIO]["USDT"] = 2000 exchange_manager = ExchangeManager(config, "binance") # use backtesting not to spam exchanges apis exchange_manager.is_simulated = True exchange_manager.is_backtesting = True exchange_manager.backtesting = Backtesting(None, [exchange_manager.id], None, []) await exchange_manager.initialize() trader = TraderSimulator(config, exchange_manager) await trader.initialize() mode = AbstractTradingMode(config, exchange_manager) consumer = AbstractTradingModeConsumer(mode) return exchange_manager, symbol, consumer
async def test_get_risk(self): config, exchange_manager, trader_inst = await self.init_default() await self.stop(exchange_manager) config[commons_constants.CONFIG_TRADING][commons_constants.CONFIG_TRADER_RISK] = 0 trader_1 = TraderSimulator(config, exchange_manager) assert round(trader_1.risk, 2) == decimal.Decimal(str(commons_constants.CONFIG_TRADER_RISK_MIN)) await self.stop(exchange_manager) config[commons_constants.CONFIG_TRADING][commons_constants.CONFIG_TRADER_RISK] = 2 trader_2 = TraderSimulator(config, exchange_manager) assert trader_2.risk == decimal.Decimal(str(commons_constants.CONFIG_TRADER_RISK_MAX)) await self.stop(exchange_manager) config[commons_constants.CONFIG_TRADING][commons_constants.CONFIG_TRADER_RISK] = 0.5 trader_2 = TraderSimulator(config, exchange_manager) assert trader_2.risk == decimal.Decimal(str(0.5)) await self.stop(exchange_manager)
async def init_default(): config = load_test_config() exchange_manager = ExchangeManager( config, TestOrderFactory.EXCHANGE_MANAGER_CLASS_STRING) await exchange_manager.initialize() trader = TraderSimulator(config, exchange_manager) await trader.initialize() return config, exchange_manager, trader
async def init_default(simulated=True): config = load_test_config() exchange_manager = ExchangeManager(config, TestTrader.EXCHANGE_MANAGER_CLASS_STRING) exchange_manager.is_simulated = simulated await exchange_manager.initialize() trader = TraderSimulator(config, exchange_manager) await trader.initialize() # set afterwards backtesting attribute to force orders instant initialization exchange_manager.is_backtesting = True return config, exchange_manager, trader
async def future_backtesting_trader(backtesting_config, backtesting_exchange_manager): trader_instance = TraderSimulator(backtesting_config, backtesting_exchange_manager) await trader_instance.initialize() return backtesting_config, backtesting_exchange_manager, trader_instance
async def simulated_trader(simulated_exchange_manager): config = load_test_config() trader_instance = TraderSimulator(config, simulated_exchange_manager) await trader_instance.initialize() return config, simulated_exchange_manager, trader_instance
async def trader_simulator(exchange_manager): config = load_test_config() config[commons_constants.CONFIG_SIMULATOR][commons_constants.CONFIG_ENABLED_OPTION] = True trader_inst = TraderSimulator(load_test_config(), exchange_manager) await trader_inst.initialize() return config, exchange_manager, trader_inst