Files
Freqtrade/tools/sklearn/sma_regression.py
2025-11-12 23:08:39 +01:00

43 lines
1.4 KiB
Python

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()