mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.4 KiB
47 lines
1.4 KiB
import os |
|
from datetime import datetime |
|
|
|
import pandas as pd |
|
|
|
|
|
def load_data(directory_path='./sample-stocks/'): |
|
historical_data = {} |
|
|
|
file_list = [filename for filename in os.listdir( |
|
directory_path) if filename.endswith(".csv")] |
|
for filename in file_list: |
|
symbol = filename.replace(".csv", "") |
|
file_path = os.path.join(directory_path, filename) |
|
historical_data[symbol] = pd.read_csv(file_path, parse_dates=[0]) |
|
return historical_data |
|
|
|
|
|
def get_historical_data(df, start, end, start_time): |
|
today = datetime.fromtimestamp(start_time).date() |
|
last_entry = df.sort_values(by="Date").iloc[-1] |
|
delta_today_last_entry = today - last_entry.Date.date() |
|
|
|
try: |
|
query_start_dt = datetime.fromisoformat(start) |
|
query_end_dt = datetime.fromisoformat(end) |
|
if query_end_dt < query_start_dt: |
|
raise Exception("end_date must come after start_date") |
|
if query_end_dt.date() > today: |
|
query_end_dt = datetime.fromtimestamp(start_time) |
|
|
|
df['datetime'] = df.Date + delta_today_last_entry |
|
return (df.loc[ |
|
(df.datetime >= query_start_dt) & |
|
(df.datetime <= query_end_dt)]) |
|
except Exception as e: |
|
raise Exception(str(e)) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
result = load_data() |
|
print(f'keys: {result.keys()}') |
|
now = datetime.now() |
|
|
|
df = result["AE"] |
|
print(df.info())
|
|
|