Untitled

 avatar
unknown
python
a year ago
2.2 kB
1
Indexable
from pip import python-telegram-bot
from telegram.ext import Updater, CommandHandler
import yfinance as yf
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy as np

# Funzione per il comando /start
def start(update, context):
    update.message.reply_text('Ciao! Benvenuto nel tuo bot di previsione del Bitcoin. Usa /predict per ottenere una previsione.')

# Funzione per il comando /predict
def predict(update, context):
    # Scarica i dati storici del prezzo del Bitcoin
    bitcoin_data = yf.download('BTC-USD', start='2020-01-01', end='2024-04-01', progress=False)

    # Prepara i dati per l'analisi
    bitcoin_data['NextDayPrice'] = bitcoin_data['Close'].shift(-1)  # Prezzo del giorno successivo
    bitcoin_data.dropna(inplace=True)  # Rimuovi righe con valori mancanti

    X = bitcoin_data[['Close']]  # Variabile indipendente (prezzo di chiusura)
    y = bitcoin_data['NextDayPrice']  # Variabile dipendente (prezzo del giorno successivo)

    # Dividi i dati in set di addestramento e test
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

    # Addestra il modello di regressione lineare
    model = LinearRegression()
    model.fit(X_train, y_train)

    # Fai una previsione per il prezzo del Bitcoin di domani
    last_price = bitcoin_data['Close'].iloc[-1]
    tomorrow_price = model.predict(np.array(last_price).reshape(-1, 1))[0]

    # Invia la previsione all'utente
    prediction_message = f"Previsione per il prezzo del Bitcoin di domani: ${tomorrow_price:.2f}"
    update.message.reply_text(prediction_message)

def main():
    # Token del tuo bot Telegram
    token = 'INSERISCI_IL_TUO_TOKEN_QUI'

    # Crea un updater per il tuo bot
    updater = Updater(token, use_context=True)

    # Ottieni il dispatcher per registrare i gestori dei comandi
    dp = updater.dispatcher

    # Registra i gestori dei comandi
    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(CommandHandler("predict", predict))

    # Avvia il bot
    updater.start_polling()

    # Mantieni il bot in esecuzione finché non viene interrotto manualmente
    updater.idle()

if __name__ == '__main__':
    main()
Editor is loading...