mirror of
https://gitlab.com/simple-stock-bots/simple-stock-bot.git
synced 2025-06-16 07:16:40 +00:00
formatting
This commit is contained in:
parent
0c71193194
commit
1fe7fe8c9c
@ -10,6 +10,7 @@ import pytz
|
||||
import requests as r
|
||||
import schedule
|
||||
|
||||
|
||||
from common.Symbol import Stock
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
@ -44,9 +45,13 @@ class MarketData:
|
||||
self.MARKETDATA_TOKEN = ""
|
||||
except KeyError:
|
||||
self.MARKETDATA_TOKEN = ""
|
||||
log.warning("Starting without an MarketData.app Token will not allow you to get market data!")
|
||||
log.warning(
|
||||
"Starting without an MarketData.app Token will not allow you to get market data!"
|
||||
)
|
||||
log.warning("Use this affiliate link so that the bot can stay free:")
|
||||
log.warning("https://dashboard.marketdata.app/marketdata/aff/go/misterbiggs?keyword=repo")
|
||||
log.warning(
|
||||
"https://dashboard.marketdata.app/marketdata/aff/go/misterbiggs?keyword=repo"
|
||||
)
|
||||
|
||||
if self.MARKETDATA_TOKEN != "":
|
||||
schedule.every().day.do(self.clear_charts)
|
||||
@ -104,7 +109,7 @@ class MarketData:
|
||||
return self.symbol_list.get(symbol.upper(), None)
|
||||
|
||||
def get_symbol_list(self):
|
||||
# Doesn't use `self.get`` since needs are much different
|
||||
# Doesn't use `self.get()` since needs are much different
|
||||
sec_resp = r.get(
|
||||
"https://www.sec.gov/files/company_tickers.json",
|
||||
headers={
|
||||
@ -148,9 +153,7 @@ class MarketData:
|
||||
statusJSON = status.json()
|
||||
|
||||
if statusJSON["status"] == "ok":
|
||||
return (
|
||||
f"CoinGecko API responded that it was OK with a {status.status_code} in {status.elapsed.total_seconds()} seconds."
|
||||
)
|
||||
return f"CoinGecko API responded that it was OK with a {status.status_code} in {status.elapsed.total_seconds()} seconds."
|
||||
else:
|
||||
return f"MarketData.app is currently reporting the following status: {statusJSON['status']}"
|
||||
|
||||
@ -229,7 +232,11 @@ class MarketData:
|
||||
|
||||
if data := self.get(
|
||||
f"stocks/candles/{resolution}/{symbol}",
|
||||
params={"from": startTime.timestamp(), "to": now.timestamp(), "extended": True},
|
||||
params={
|
||||
"from": startTime.timestamp(),
|
||||
"to": now.timestamp(),
|
||||
"extended": True,
|
||||
},
|
||||
):
|
||||
data.pop("s")
|
||||
df = pd.DataFrame(data)
|
||||
@ -316,7 +323,9 @@ class MarketData:
|
||||
|
||||
options_data["underlying"] = "$" + options_data["underlying"]
|
||||
|
||||
options_data["updated"] = humanize.naturaltime(dt.datetime.now() - dt.datetime.fromtimestamp(options_data["updated"]))
|
||||
options_data["updated"] = humanize.naturaltime(
|
||||
dt.datetime.now() - dt.datetime.fromtimestamp(options_data["updated"])
|
||||
)
|
||||
|
||||
options_data["expiration"] = humanize.naturaltime(
|
||||
dt.datetime.now() - dt.datetime.fromtimestamp(options_data["expiration"])
|
||||
|
@ -26,6 +26,9 @@ class Symbol:
|
||||
def __str__(self) -> str:
|
||||
return self.id
|
||||
|
||||
def __hash__(self):
|
||||
return hash(self.id)
|
||||
|
||||
|
||||
class Stock(Symbol):
|
||||
"""Stock Market Object. Gets data from MarketData"""
|
||||
|
@ -5,7 +5,6 @@ import pandas as pd
|
||||
import requests as r
|
||||
import schedule
|
||||
from markdownify import markdownify
|
||||
|
||||
from common.Symbol import Coin
|
||||
from common.utilities import rate_limited
|
||||
|
||||
@ -38,7 +37,9 @@ class cg_Crypto:
|
||||
# Make sure API returned a proper status code
|
||||
|
||||
if resp.status_code == 429:
|
||||
log.warning(f"CoinGecko returned 429 - Too Many Requests for endpoint: {endpoint}. Sleeping and trying again.")
|
||||
log.warning(
|
||||
f"CoinGecko returned 429 - Too Many Requests for endpoint: {endpoint}. Sleeping and trying again."
|
||||
)
|
||||
time.sleep(10)
|
||||
return self.get(endpoint=endpoint, params=params, timeout=timeout)
|
||||
|
||||
@ -58,7 +59,9 @@ class cg_Crypto:
|
||||
|
||||
def symbol_id(self, symbol) -> str:
|
||||
try:
|
||||
return self.symbol_list[self.symbol_list["symbol"] == symbol]["id"].values[0]
|
||||
return self.symbol_list[self.symbol_list["symbol"] == symbol]["id"].values[
|
||||
0
|
||||
]
|
||||
except KeyError:
|
||||
return ""
|
||||
|
||||
@ -69,7 +72,9 @@ class cg_Crypto:
|
||||
# Removes all binance-peg symbols
|
||||
symbols = symbols[~symbols["id"].str.contains("binance-peg")]
|
||||
|
||||
symbols["description"] = "$$" + symbols["symbol"].str.upper() + ": " + symbols["name"]
|
||||
symbols["description"] = (
|
||||
"$$" + symbols["symbol"].str.upper() + ": " + symbols["name"]
|
||||
)
|
||||
symbols = symbols[["id", "symbol", "name", "description"]]
|
||||
symbols["type_id"] = "$$" + symbols["symbol"]
|
||||
|
||||
@ -90,9 +95,7 @@ class cg_Crypto:
|
||||
|
||||
try:
|
||||
status.raise_for_status()
|
||||
return (
|
||||
f"CoinGecko API responded that it was OK with a {status.status_code} in {status.elapsed.total_seconds()} seconds."
|
||||
)
|
||||
return f"CoinGecko API responded that it was OK with a {status.status_code} in {status.elapsed.total_seconds()} seconds."
|
||||
except r.HTTPError:
|
||||
return f"CoinGecko API returned an error code {status.status_code} in {status.elapsed.total_seconds()} seconds."
|
||||
|
||||
@ -162,7 +165,9 @@ class cg_Crypto:
|
||||
f"/coins/{symbol.id}/ohlc",
|
||||
params={"vs_currency": self.vs_currency, "days": 1},
|
||||
):
|
||||
df = pd.DataFrame(resp, columns=["Date", "Open", "High", "Low", "Close"]).dropna()
|
||||
df = pd.DataFrame(
|
||||
resp, columns=["Date", "Open", "High", "Low", "Close"]
|
||||
).dropna()
|
||||
df["Date"] = pd.to_datetime(df["Date"], unit="ms")
|
||||
df = df.set_index("Date")
|
||||
return df
|
||||
@ -188,7 +193,9 @@ class cg_Crypto:
|
||||
f"/coins/{symbol.id}/ohlc",
|
||||
params={"vs_currency": self.vs_currency, "days": 30},
|
||||
):
|
||||
df = pd.DataFrame(resp, columns=["Date", "Open", "High", "Low", "Close"]).dropna()
|
||||
df = pd.DataFrame(
|
||||
resp, columns=["Date", "Open", "High", "Low", "Close"]
|
||||
).dropna()
|
||||
df["Date"] = pd.to_datetime(df["Date"], unit="ms")
|
||||
df = df.set_index("Date")
|
||||
return df
|
||||
|
@ -1,11 +1,2 @@
|
||||
[tool.black]
|
||||
line-length = 130
|
||||
|
||||
[tool.flake8]
|
||||
max-line-length = 130
|
||||
|
||||
[tool.pycodestyle]
|
||||
max_line_length = 130
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 130
|
Loading…
x
Reference in New Issue
Block a user