import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# Exemple : dataframe avec une colonne sma24
n = 100
df = pd.DataFrame({
    "sma24": np.sin(np.linspace(0, 6*np.pi, n)) * 50 + 200 + np.random.randn(n)*2
})

# --- paramètres
lookback = 30        # nombre de bougies utilisées pour l'apprentissage
future_steps = 10    # combien de bougies futures on veut estimer

# --- Préparer les données
X = np.arange(lookback).reshape(-1, 1)                      # 0 .. 29
y = df["sma24"].iloc[-lookback:].values                     # les dernières valeurs

# --- Entraîner la régression
model = LinearRegression()
model.fit(X, y)

# --- Prédire les valeurs futures
X_future = np.arange(lookback, lookback + future_steps).reshape(-1, 1)
y_future = model.predict(X_future)

# --- Reconstituer la courbe complète (historique + prévision)
predicted_full = np.concatenate([y, y_future])

# --- Affichage
plt.figure(figsize=(10,5))
plt.plot(df.index[-lookback:], y, label="Historique (sma24)", color="blue")
plt.plot(
    np.arange(df.index[-1]-lookback+1, df.index[-1]+future_steps+1),
    predicted_full,
    label="Régression + prévision", color="orange", linestyle="--"
)
plt.axvline(df.index[-1], color="gray", linestyle=":")
plt.legend()
plt.title(f"Projection de SMA24 sur {future_steps} bougies futures")
plt.show()
