Files
daytrade/providers/provider.py

38 lines
1.4 KiB
Python

from datetime import datetime
import pandas as pd
from providers.base import DataProvider
class FinDataRetriever:
def __init__(self, provider: DataProvider, ticker: str):
self.provider = provider
self.ticker = ticker
def get_ticker(self):
return self.provider.get_ticker(self.ticker)
def get_historical(self, start: str, end: str) -> pd.DataFrame:
return self.provider.get_historical(self.ticker, start, end)
def get_historical_dynamic(self, sheet, date_range):
start_date = sheet.acell(date_range[1]).value
end_date = datetime.today().strftime('%Y-%m-%d')
histdata = self.provider.get_historical(self.ticker, start_date, end_date)
## fill forward for indicators traded only on business days
histdata.index = pd.to_datetime(histdata.index).tz_localize(None)
df_date_range = pd.date_range(start=start_date, end=end_date, freq='D')
histdata = histdata.reindex(df_date_range)
if end_date in histdata.index:
histdata.drop(end_date, inplace=True)
histdata.ffill(inplace=True)
values_close = list(reversed([[close] for close in histdata["Close"].to_list()]))
values_dates = list(reversed([[date] for date in histdata.index.to_list()]))
return {"close": values_close, "date": values_dates}
def get_current(self) -> float:
return self.provider.get_current(self.ticker)