|
import pandas as pd |
|
import numpy as np |
|
import openpyxl |
|
from openpyxl.utils.dataframe import dataframe_to_rows |
|
from openpyxl.styles import Font |
|
|
|
|
|
sample_data = { |
|
"Timestamp": pd.date_range(start="2024-01-01", periods=10, freq="T"), |
|
"Open": np.random.uniform(30000, 40000, 10), |
|
"High": np.random.uniform(30000, 40000, 10), |
|
"Low": np.random.uniform(30000, 40000, 10), |
|
"Close": np.random.uniform(30000, 40000, 10), |
|
"Volume": np.random.uniform(100, 500, 10) |
|
} |
|
|
|
|
|
df_raw_data = pd.DataFrame(sample_data) |
|
|
|
|
|
sma_period = 5 |
|
ema_period = 5 |
|
df_raw_data['SMA'] = df_raw_data['Close'].rolling(window=sma_period).mean() |
|
df_raw_data['EMA'] = df_raw_data['Close'].ewm(span=ema_period, adjust=False).mean() |
|
|
|
|
|
wb = openpyxl.Workbook() |
|
wb.remove(wb.active) |
|
|
|
|
|
ws_raw = wb.create_sheet("Raw Data") |
|
for r in dataframe_to_rows(df_raw_data, index=False, header=True): |
|
ws_raw.append(r) |
|
|
|
|
|
ws_feature = wb.create_sheet("Feature Engineering") |
|
ws_feature["A1"].value = "Adjustable SMA and EMA" |
|
ws_feature["A1"].font = Font(bold=True) |
|
ws_feature["A2"].value = "SMA Period:" |
|
ws_feature["B2"].value = sma_period |
|
ws_feature["A3"].value = "EMA Period:" |
|
ws_feature["B3"].value = ema_period |
|
|
|
|
|
ws_feature["D2"].value = "Close Price" |
|
ws_feature["E2"].value = "SMA (Dynamic)" |
|
ws_feature["F2"].value = "EMA (Dynamic)" |
|
|
|
|
|
for i in range(3, len(df_raw_data) + 3): |
|
ws_feature[f"D{i}"] = f"=Raw Data!E{i}" |
|
ws_feature[f"E{i}"] = f"=AVERAGE(OFFSET(D{i}-$B$2+1,0,0,$B$2,1))" |
|
ws_feature[f"F{i}"] = f"=EXPONENTIALMOVINGAVERAGE(D{i}, $B$3)" |
|
|
|
|
|
ws_synthetic = wb.create_sheet("Synthetic Relationships") |
|
ws_synthetic["A1"].value = "Synthetic Relationships - Parameter Adjustments" |
|
ws_synthetic["A1"].font = Font(bold=True) |
|
|
|
|
|
ws_synthetic.append(["Query Date", "Found Close Price", "Adjusted SMA", "Adjusted EMA"]) |
|
for i in range(3, len(df_raw_data) + 3): |
|
ws_synthetic[f"A{i}"] = ws_raw[f"A{i}"].value |
|
ws_synthetic[f"B{i}"] = f"=Raw Data!E{i}" |
|
ws_synthetic[f"C{i}"] = f"=Feature Engineering!E{i}" |
|
ws_synthetic[f"D{i}"] = f"=Feature Engineering!F{i}" |
|
|
|
|
|
file_path = "ActiveGraphTheory.xlsx" |
|
wb.save(file_path) |
|
|
|
file_path |
|
|