Биткойн — это криптовалюта, которая в последнее время привлекает большое внимание. Прогнозирование цены биткойна — сложная задача из-за его волатильности и непредсказуемости. В этой статье мы будем использовать код 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 и методы машинного обучения для прогнозирования цены биткойна на основе различных технических индикаторов.

Важно отметить, что это всего лишь один из подходов к прогнозированию цены биткойна, и существует множество других факторов, таких как настроения на рынке и глобальные экономические события, которые также могут повлиять на цену. Поэтому всегда важно учитывать множество факторов, а не полагаться исключительно на технические индикаторы при принятии инвестиционных решений.