diff --git a/functions.py b/functions.py index 9e01b32..3d85ef6 100644 --- a/functions.py +++ b/functions.py @@ -45,7 +45,12 @@ Market data is provided by [IEX Cloud](https://iexcloud.io) def __init__(self, IEX_TOKEN: str): self.IEX_TOKEN = IEX_TOKEN self.get_symbol_list() + self.charts = {} schedule.every().monday.do(self.get_symbol_list) + schedule.every().day.do(self.clear_charts) + + def clear_charts(self): + self.charts = {} def get_symbol_list(self, return_df=False): """ @@ -240,17 +245,25 @@ Market data is provided by [IEX Cloud](https://iexcloud.io) return df def chart_reply(self, symbol: str): + schedule.run_pending() + if symbol.upper() not in list(self.symbol_list["symbol"]): return pd.DataFrame() - IEXurl = f"https://cloud.iexapis.com/stable/stock/{symbol}/chart/1mm?token={self.IEX_TOKEN}&chartInterval=3&includeToday=true" - print(IEXurl) + try: # https://stackoverflow.com/a/3845776/8774114 + return self.charts[symbol.upper()] + except KeyError: + pass + + IEXurl = f"https://cloud.iexapis.com/stable/stock/{symbol}/chart/1mm?token={self.IEX_TOKEN}&chartInterval=3&includeToday=false" response = r.get(IEXurl) + if response.status_code == 200: df = pd.DataFrame(response.json()) df.dropna(inplace=True, subset=["date", "minute", "high", "low", "volume"]) df["DT"] = pd.to_datetime(df["date"] + "T" + df["minute"]) df = df.set_index("DT") + self.charts[symbol.upper()] = df return df def stat_reply(self, symbols: list):