Биткойн — это криптовалюта, которая в последнее время привлекает большое внимание. Прогнозирование цены биткойна — сложная задача из-за его волатильности и непредсказуемости. В этой статье мы будем использовать код Python для прогнозирования цены биткойна с использованием исторических данных.
Первым шагом является импорт необходимых библиотек. Мы будем использовать Pandas, NumPy, Scikit-learn и TA-Lib. TA-Lib — это библиотека технического анализа, которая поможет нам рассчитать некоторые нужные нам индикаторы.
import pandas as pd import numpy as np from sklearn.neural_network import MLPRegressor from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler import ta import pandas_ta as pda
Далее нам нужно загрузить исторические данные. Мы будем использовать ежедневные данные для биткойнов. Данные можно загрузить из различных источников, таких как Yahoo Finance, Quandl и т. д. В этом примере мы будем использовать CSV-файл, содержащий дневные цены биткойнов.
df = pd.read_csv('BTC1D.csv') df2 = pd.read_csv('BTC1D.csv')
После загрузки данных нам нужно определить функции, которые мы будем использовать для прогнозирования цены. В этом примере мы будем использовать индекс относительной силы (RSI), индекс среднего направления (ADX), адаптивную скользящую среднюю Кауфмана (KAMA) и экспоненциальную скользящую среднюю (EMA) с разными временными окнами. Эти индикаторы обычно используются в техническом анализе и могут быть рассчитаны с помощью TA-Lib.
df['RSI']=ta.momentum.rsi(close=df['close'], window=14,fillna= True) df['EMA1']=((ta.trend.ema_indicator(close=df['close'], window=9,fillna= True)) ) df['EMA2']=((ta.trend.ema_indicator(close=df['close'], window=21,fillna= True)) ) df['EMA3']=((ta.trend.ema_indicator(close=df['close'], window=50,fillna= True)) ) df['EMA4']=((ta.trend.ema_indicator(close=df['close'], window=100,fillna= True)) ) df['ADX']=ta.trend.adx(high=df['high'] ,low=df['low'],close=df['close'], window=14, fillna= True) df['KAMA'] = ta.momentum.kama(close=df['close'], window=10, pow1=2, pow2=30, fillna= True) features = ['close', 'RSI', 'ADX', 'KAMA', 'EMA1', 'EMA2', 'EMA3', 'EMA4']
Нам также необходимо определить целевую переменную, которая представляет собой цену биткойна за один день. Мы можем сделать это, сдвинув цену закрытия на один день и удалив последнюю строку, которая будет иметь нулевое значение.
target = 'price_1_day' df['price_1_day'] = df['close'].shift(-1) df = df.dropna()
Далее мы разделим данные на наборы для обучения и тестирования. Мы будем использовать 20% данных для тестирования, а остальные — для обучения модели.
X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=42)
Перед обучением модели нам нужно масштабировать данные. Масштабирование данных важно для нейронных сетей, поскольку оно может помочь повысить их производительность.
scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test)
Теперь, после запуска приведенного выше кода Python, мы получаем следующий вывод:
Accuracy: 0.9263835629844685 La valeur prédite du bitcoin dans une semaine est de : 26952.764129152376
Оценка точности модели MLPRegressor составляет 0,926, что является довольно высоким показателем и указывает на то, что модель работает хорошо.
Прогнозируемое значение цены биткойна на следующий день составляет 26952,76.
Кроме того, на графике показаны фактические цены закрытия биткойнов с течением времени, а также прогнозируемые цены закрытия на следующий день. Прогнозируемые цены обычно следуют тенденции фактических цен, хотя между ними есть некоторые различия.
X_future2 = df2[features].values X_future_scaled2 = scaler.transform(X_future2) df2['pred'] = mlp.predict(X_future_scaled2) import matplotlib.pyplot as plt # Plot the actual closing prices plt.plot(df2['close'], label='Actual Closing Prices') # Predicted values for the next week plt.plot(df2['pred'], label='Predicted Closing Prices') plt.legend() plt.show()
В целом, этот код демонстрирует, как мы можем использовать Python и методы машинного обучения для прогнозирования цены биткойна на основе различных технических индикаторов.
Важно отметить, что это всего лишь один из подходов к прогнозированию цены биткойна, и существует множество других факторов, таких как настроения на рынке и глобальные экономические события, которые также могут повлиять на цену. Поэтому всегда важно учитывать множество факторов, а не полагаться исключительно на технические индикаторы при принятии инвестиционных решений.