From 903fa5c30fef3bea5298939cff43d5d34e6e8180 Mon Sep 17 00:00:00 2001 From: Afiz Momin Date: Sat, 2 Mar 2024 15:53:47 -0800 Subject: [PATCH] fix: Coinbase missing API key and secret when starting scanner --- README.md | 8 ++++---- scanner.py | 38 +++++++++++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index fae7d3b4..90fb48f8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Python Crypto Bot v8.2.3 (pycryptobot) +# Python Crypto Bot v8.2.4 (pycryptobot) [![Docker](https://github.com/whittlem/pycryptobot/actions/workflows/container.yml/badge.svg)](https://github.com/whittlem/pycryptobot/actions/workflows/container.yml/badge.svg) [![Tests](https://github.com/whittlem/pycryptobot/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/whittlem/pycryptobot/actions/workflows/unit-tests.yml/badge.svg) @@ -38,10 +38,10 @@ Follow my Medium publication for PyCryptoBot articles For information about installing, using, and getting the most out of the bot... please refer to the articles on Medium! Install and Setup of PyCryptoBot 7 -https://trading-data-analysis.pro/install-and-setup-of-pycryptobot-7-f1b2c832e795 + PyCryptoBot 7 Live Test Results -https://trading-data-analysis.pro/pycryptobot-7-live-test-results-b56316e0995c + PyCryptoBot 7 Configuration -https://trading-data-analysis.pro/pycryptobot-7-configuration-e314931f94 + diff --git a/scanner.py b/scanner.py index 7109f5f5..7acdd01f 100644 --- a/scanner.py +++ b/scanner.py @@ -16,13 +16,13 @@ GRANULARITY = Granularity(Granularity.ONE_HOUR) try: - with open("scanner.json", encoding='utf8') as json_file: + with open("scanner.json", encoding="utf8") as json_file: config = json.load(json_file) except IOError as err: print(err) try: - with open("config.json", encoding='utf8') as json_file: + with open("config.json", encoding="utf8") as json_file: bot_config = json.load(json_file) except IOError as err: print(err) @@ -30,11 +30,25 @@ 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(bot_config[ex.value]["api_url"]) elif ex == Exchange.COINBASE: - api = CBAuthAPI(bot_config[ex.value]["api_key"], bot_config[ex.value]["api_secret"], bot_config[ex.value]["api_url"]) + # Read config from key file + try: + with open(app.api_key_file, "r") as f: + key = f.readline().strip() + secret = f.readline().strip() + bot_config[ex.value]["api_key"] = key + bot_config[ex.value]["api_secret"] = secret + except Exception: + raise RuntimeError(f"Unable to read {app.api_key_file}") + api = CBAuthAPI( + bot_config[ex.value]["api_key"], + bot_config[ex.value]["api_secret"], + bot_config[ex.value]["api_url"], + ) elif ex == Exchange.COINBASEPRO: api = CPublicAPI() elif ex == Exchange.KUCOIN: @@ -85,10 +99,14 @@ ROW = 1 for market, data in df_markets.T.items(): - print(f"[{ROW}/{len(df_markets)}] {market} {round((ROW/len(df_markets))*100, 2)}%") + print( + f"[{ROW}/{len(df_markets)}] {market} {round((ROW/len(df_markets))*100, 2)}%" + ) try: if int(data["volume"]) > 0: - ta = TechnicalAnalysis(api.get_historical_data(market, GRANULARITY, None), app=app) + ta = TechnicalAnalysis( + api.get_historical_data(market, GRANULARITY, None), app=app + ) ta.add_ema(12) ta.add_ema(26) ta.add_atr(72) @@ -97,13 +115,15 @@ df_1h_last = df_1h.tail(1) # volatility over the last 72 hours - df_markets.at[market, "atr72"] = float(df_1h_last[["atr72"]].values[0][0]) + df_markets.at[market, "atr72"] = float( + df_1h_last[["atr72"]].values[0][0] + ) df_markets["atr72_pcnt"] = ( df_markets["atr72"] / df_markets["price"] * 100 ).round(2) - df_markets.at[market, "buy_next"] = df_1h_last[df_1h_last["market"] == market][ - "ema12ltema26" - ].values[0] + df_markets.at[market, "buy_next"] = df_1h_last[ + df_1h_last["market"] == market + ]["ema12ltema26"].values[0] except Exception as err: print(err)