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"
예제 #2
0
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()
예제 #3
0
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