def _set_exchange(self, exchange: str = None) -> Exchange: if self.cli_args["exchange"] is not None: exchange = Exchange(self.cli_args["exchange"]) if isinstance(exchange, str): exchange = Exchange(exchange) if not exchange: if (Exchange.COINBASEPRO.value or "api_pass") in self.config: exchange = Exchange.COINBASEPRO elif Exchange.BINANCE.value in self.config: exchange = Exchange.BINANCE elif Exchange.KUCOIN.value in self.config: exchange = Exchange.KUCOIN else: exchange = Exchange.DUMMY return exchange
from models.Trading import TechnicalAnalysis from models.exchange.binance import PublicAPI as BPublicAPI from models.exchange.coinbase_pro import PublicAPI as CPublicAPI from models.exchange.kucoin import PublicAPI as KPublicAPI from models.exchange.Granularity import Granularity from models.exchange.ExchangesEnum import Exchange GRANULARITY = Granularity(Granularity.ONE_HOUR) try: with open("scanner.json", encoding='utf8') as json_file: config = json.load(json_file) except IOError as err: print(err) for exchange in config: ex = Exchange(exchange) app = PyCryptoBot(exchange=ex) for quote in config[ex.value]["quote_currency"]: if ex == Exchange.BINANCE: api = BPublicAPI() elif ex == Exchange.COINBASEPRO: api = CPublicAPI() elif ex == Exchange.KUCOIN: api = KPublicAPI() else: raise ValueError(f"Invalid exchange: {ex}") markets = [] resp = api.getMarkets24HrStats() if ex == Exchange.BINANCE: for row in resp:
def test_exception_thrown_when_invalid_value(): with pytest.raises(ValueError) as exc_info: Exchange("xxx") assert exc_info.type is ValueError assert exc_info.value.args[0] == "'xxx' is not a valid Exchange"
def test_converting_string_to_enum(): assert Exchange("binance") == Exchange.BINANCE assert Exchange("coinbasepro") == Exchange.COINBASEPRO assert Exchange("kucoin") == Exchange.KUCOIN