def test_exception_thrown_when_invalid_value(): with pytest.raises(ValueError) as exc_info: Granularity(10000000) assert exc_info.type is ValueError assert exc_info.value.args[0] == "10000000 is not a valid Granularity"
import time import json import pandas as pd from models.PyCryptoBot import PyCryptoBot from models.exchange import kucoin from models.helper.TelegramBotHelper import TelegramBotHelper as TGBot 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()
def load_configs(): exchanges_loaded = [] try: with open("screener.json", encoding='utf8') as json_file: config = json.load(json_file) except IOError as err: raise (err) try: with open("config.json", encoding='utf8') as json_file: bot_config = json.load(json_file) except IOError as err: print(err) try: for exchange in config: ex = CryptoExchange(exchange) exchange_config = config[ex.value] if ex == CryptoExchange.BINANCE: binance_app = PyCryptoBot(exchange=ex) binance_app.public_api = BPublicAPI( bot_config[ex.value]["api_url"]) binance_app.scanner_quote_currencies = exchange_config.get( 'quote_currency', ['USDT']) binance_app.granularity = Granularity( Granularity.convert_to_enum( exchange_config.get('granularity', '1h'))) binance_app.adx_threshold = exchange_config.get( 'adx_threshold', 25) binance_app.volatility_threshold = exchange_config.get( 'volatility_threshold', 9) binance_app.minimum_volatility = exchange_config.get( 'minimum_volatility', 5) binance_app.minimum_volume = exchange_config.get( 'minimum_volume', 20000) binance_app.volume_threshold = exchange_config.get( 'volume_threshold', 20000) binance_app.minimum_quote_price = exchange_config.get( 'minimum_quote_price', 0.0000001) binance_app.selection_score = exchange_config.get( 'selection_score', 10) binance_app.tv_screener_ratings = [ rating.upper() for rating in exchange_config.get( 'tv_screener_ratings', ['STRONG_BUY']) ] exchanges_loaded.append(binance_app) elif ex == CryptoExchange.COINBASEPRO: coinbase_app = PyCryptoBot(exchange=ex) coinbase_app.public_api = CPublicAPI() coinbase_app.scanner_quote_currencies = exchange_config.get( 'quote_currency', ['USDT']) coinbase_app.granularity = Granularity( Granularity.convert_to_enum( int(exchange_config.get('granularity', '3600')))) coinbase_app.adx_threshold = exchange_config.get( 'adx_threshold', 25) coinbase_app.volatility_threshold = exchange_config.get( 'volatility_threshold', 9) coinbase_app.minimum_volatility = exchange_config.get( 'minimum_volatility', 5) coinbase_app.minimum_volume = exchange_config.get( 'minimum_volume', 20000) coinbase_app.volume_threshold = exchange_config.get( 'volume_threshold', 20000) coinbase_app.minimum_quote_price = exchange_config.get( 'minimum_quote_price', 0.0000001) coinbase_app.selection_score = exchange_config.get( 'selection_score', 10) coinbase_app.tv_screener_ratings = [ rating.upper() for rating in exchange_config.get( 'tv_screener_ratings', ['STRONG_BUY']) ] exchanges_loaded.append(coinbase_app) elif ex == CryptoExchange.KUCOIN: kucoin_app = PyCryptoBot(exchange=ex) kucoin_app.public_api = KPublicAPI( bot_config[ex.value]["api_url"]) kucoin_app.scanner_quote_currencies = exchange_config.get( 'quote_currency', ['USDT']) kucoin_app.granularity = Granularity( Granularity.convert_to_enum( exchange_config.get('granularity', '1h'))) kucoin_app.adx_threshold = exchange_config.get( 'adx_threshold', 25) kucoin_app.volatility_threshold = exchange_config.get( 'volatility_threshold', 9) kucoin_app.minimum_volatility = exchange_config.get( 'minimum_volatility', 5) kucoin_app.minimum_volume = exchange_config.get( 'minimum_volume', 20000) kucoin_app.volume_threshold = exchange_config.get( 'volume_threshold', 20000) kucoin_app.minimum_quote_price = exchange_config.get( 'minimum_quote_price', 0.0000001) kucoin_app.selection_score = exchange_config.get( 'selection_score', 10) kucoin_app.tv_screener_ratings = [ rating.upper() for rating in exchange_config.get( 'tv_screener_ratings', ['STRONG_BUY']) ] exchanges_loaded.append(kucoin_app) else: raise ValueError(f"Invalid exchange found in config: {ex}") except AttributeError as e: print(f"Invalid exchange: {e}...ignoring.") return exchanges_loaded