import os
import schwabdev
from dotenv import load_dotenv
import pandas as pd
from datetime import datetime

# Cargar variables de entorno
load_dotenv()
client = schwabdev.Client(
    os.getenv('appKey'),
    os.getenv('appSecret'),
    os.getenv('callbackUrl'),
    verbose=True
)

# Definir el rango de fechas deseado
start_date_str = "2023-01-01"
end_date_str = "2029-01-01"
start_date_dt = datetime.strptime(start_date_str, '%Y-%m-%d')
end_date_dt = datetime.strptime(end_date_str, '%Y-%m-%d')

# Solicitar histórico diario
data = client.price_history(
    "$SPX",
    periodType="year",
    frequencyType="daily",
    frequency=1,
    startDate=start_date_dt,
    endDate=end_date_dt
).json()

candles = data.get("candles", [])

if candles:
    df = pd.DataFrame(candles)
    df['date'] = pd.to_datetime(df['datetime'], unit='ms').dt.strftime('%Y-%m-%d')
    df['gap'] = ((df['open'] - df['close'].shift(1)) / df['close'].shift(1)) * 100
    df['gap_pts'] = df['open'] - df['close'].shift(1)
    

    # Redondear a 2 decimales
    df['gap'] = df['gap'].round(2)
    df['gap_pts'] = df['gap_pts'].round(2)
    
    df_csv = df[['date', 'open', 'close', 'gap', 'gap_pts']]
    
    output_path = '/var/www/html/flask_project/spx_history_with_gap.csv'
    df_csv.to_csv(output_path, index=False)
    print(f"CSV guardado con éxito en '{output_path}'")
else:
    print("No se encontraron datos en 'candles'.")
