def install_routes(): """ :return: """ considering_candles = set() # when importing market data, considering_candles is all we need if jh.is_collecting_data(): for r in router.market_data: considering_candles.add((r.exchange, r.symbol)) config['app']['considering_candles'] = tuple(considering_candles) return # validate routes for duplicates: # each exchange-symbol pair can be traded only once. for r in router.routes: considering_candles.add((r.exchange, r.symbol)) exchange = r.exchange symbol = r.symbol count = 0 for ro in router.routes: if ro.exchange == exchange and ro.symbol == symbol: count += 1 if count != 1: raise InvalidRoutes( 'each exchange-symbol pair can be traded only once. \nMore info: https://docs.jesse.trade/docs/routes.html#trading-multiple-routes') trading_exchanges = set() trading_timeframes = set() trading_symbols = set() for r in router.routes: trading_exchanges.add(r.exchange) trading_timeframes.add(r.timeframe) trading_symbols.add(r.symbol) considering_exchanges = trading_exchanges.copy() considering_timeframes = trading_timeframes.copy() considering_symbols = trading_symbols.copy() for e in router.extra_candles: considering_candles.add((e[0], e[1])) considering_exchanges.add(e[0]) considering_symbols.add(e[1]) considering_timeframes.add(e[2]) # 1m must be present at all times considering_timeframes.add('1m') config['app']['considering_candles'] = tuple(considering_candles) config['app']['considering_exchanges'] = tuple(considering_exchanges) config['app']['considering_symbols'] = tuple(considering_symbols) config['app']['considering_timeframes'] = tuple(considering_timeframes) config['app']['trading_exchanges'] = tuple(trading_exchanges) config['app']['trading_symbols'] = tuple(trading_symbols) config['app']['trading_timeframes'] = tuple(trading_timeframes)
def quote_asset(symbol: str) -> str: try: return symbol.split('-')[1] except IndexError: from jesse.exceptions import InvalidRoutes raise InvalidRoutes( "The symbol format is incorrect. Correct example: 'BTC-USDT'. Yours is '{}'" .format(symbol))
def install_routes() -> None: considering_candles = set() # when importing market data, considering_candles is all we need if jh.is_collecting_data(): for r in router.market_data: considering_candles.add((r.exchange, r.symbol)) config['app']['considering_candles'] = tuple(considering_candles) return # validate routes for duplicates: # each exchange-symbol pair can be traded only once. for r in router.routes: considering_candles.add((r.exchange, r.symbol)) exchange = r.exchange symbol = r.symbol count = sum(ro.exchange == exchange and ro.symbol == symbol for ro in router.routes) if count != 1: raise InvalidRoutes( 'each exchange-symbol pair can be traded only once. \nMore info: https://docs.jesse.trade/docs/routes.html#trading-multiple-routes' ) # check to make sure if trading more than one route, they all have the same quote # currency because otherwise we cannot calculate the correct performance metrics first_routes_quote = jh.quote_asset(router.routes[0].symbol) for r in router.routes: if jh.quote_asset(r.symbol) != first_routes_quote: raise InvalidRoutes( 'All trading routes must have the same quote asset.') trading_exchanges = set() trading_timeframes = set() trading_symbols = set() for r in router.routes: trading_exchanges.add(r.exchange) trading_timeframes.add(r.timeframe) trading_symbols.add(r.symbol) considering_exchanges = trading_exchanges.copy() considering_timeframes = trading_timeframes.copy() considering_symbols = trading_symbols.copy() for e in router.extra_candles: considering_candles.add((e['exchange'], e['symbol'])) considering_exchanges.add(e['exchange']) considering_symbols.add(e['symbol']) considering_timeframes.add(e['timeframe']) # 1m must be present at all times considering_timeframes.add('1m') config['app']['considering_candles'] = tuple(considering_candles) config['app']['considering_exchanges'] = tuple(considering_exchanges) config['app']['considering_symbols'] = tuple(considering_symbols) config['app']['considering_timeframes'] = tuple(considering_timeframes) config['app']['trading_exchanges'] = tuple(trading_exchanges) config['app']['trading_symbols'] = tuple(trading_symbols) config['app']['trading_timeframes'] = tuple(trading_timeframes)