Prédire le marché de la crypto avec NaiveBayes | par TokensQuant.com | Coinmoines | déc. 2021

IAavec
TokensQuant.com

Le prochain prix du Bitcoin sera ? Je m’en fous vraiment 🙂 comme aucun algo non plus. Il s’agit plus de savoir où le marché sera le prochain UP, DOWN, Neutre ?!

La plupart des algorithmes que j’ai testés prédisent les prix futurs en fonction des prix passés et en tant que commerçant à long terme, je peux confirmer que c’est comme du sable dans les yeux pour certains commerçants et leur donner l’espoir de quelque chose qui n’est tout simplement pas si facile à prédire.

Photo de Jeremy Bezanger sur Unsplash

Que se passe-t-il si je pense différemment et que je suis prêt à faire en sorte que les prix prévus à l’avenir ressemblent davantage à des nombres tels que 0, 1, 2. Ce ne serait pas si excitant pour vous, je le sais. Maintenant, je peux dire que le 0 signifie que le marché est neutre, le 1 marché est haussier et 2 que le marché est baissier.

Cet article est écrit à la volée et je ne sais pas encore quel sera le résultat final. Peut-être que j’ai trouvé le Saint Graal ou que je perds simplement mon temps.

Pour les données, j’utilise ma propre base de données qui est stockée à partir de Binance via socket, car je la considère plus appropriée que certaines bases publiques. La raison principale est que je collecte des données beaucoup plus détaillées et celles-ci devraient (je l’espère) être un avantage crucial pour faire des prédictions.

Les données sont enregistrées à l’aide de Websocket sur Binance et stockées dans MongoDB. Et voici la partie du code d’où je l’appelle :

#Details to connect to DB - you can use mysql, csv, yfinance or any other I am using MongoDB
from mongo.mongodb import DBConnection
import pymongo
import pandas as pd
#Load dataset

login = DBConnection().login()
db_login = login["binance_24hTicker"]["ADAUSDT"]
the_list2 = []
get_all_data_from_token2 = db_login.find().sort('_id', pymongo.DESCENDING).limit(400)
for last_values_fromDb2 in get_all_data_from_token2:
the_list2.append(last_values_fromDb2)

df = pd.DataFrame(the_list2)
print(df)

Une fois toutes les données modifiées en valeurs 0, 1, 2 et DF ressemble à ceci :

En plus du volume de données OHLC standard, j’enregistre une profondeur supplémentaire, un volume plus détaillé, etc.

Après quelques tests, réfléchir, lutter, développer, éduquer… Mon idée est que chaque ligne de DF devrait être une valeur autonome, c’est-à-dire adaptée à NaiveBayes. Par example. Les données à 11 h 00 min 01 s sont un John Doe et ont des paramètres. Son mouvement dans la dernière minute était 0, 1 ou 2. Signification 0 = aucun mouvement, 1 = se déplace vers le BAS et 2 = se déplace vers le HAUT à ces algorithmes de point n’a pas besoin de savoir combien il a bougé juste qu’il a bougé. Et Naive Bayes n’est pas une sorte d’algo qui devrait bouger de toute façon. Les données sont donc gérées comme :

Pic: Vrai comme 0, Faux comme 1

Déplacer en fonction de la dernière fermeture : 0=Aucun, 1=BAS, 2=UP

RSI : 30 = 0, 30–70 = 1, 70+= 2

Le volume: 0=inchangé, 1=BAS, 2=HAUT

Le symbole choisi est : ADAUSD

import talib
def RSI(data, window=14, adjust=False):
delta = data['Close'].diff(1).dropna()
loss = delta.copy()
gains = delta.copy()

gains[gains < 0] = 0
loss[loss > 0] = 0

gain_ewm = gains.ewm(com=window - 1, adjust=adjust).mean()
loss_ewm = abs(loss.ewm(com=window - 1, adjust=adjust).mean())

RS = gain_ewm / loss_ewm
RSI = 100 - 100 / (1 + RS)

return RSI

reversed_df = df.iloc[::-1]
df["RSI"] = talib.RSI(reversed_df["Close"], 14)

import matplotlib.pyplot as plt
ax1 = plt.subplot2grid((10, 1), (0, 0), rowspan=4, colspan=1)
ax2 = plt.subplot2grid((10, 1), (5, 0), rowspan=4, colspan=1)
ax1.plot(df['Close'], linewidth=2.5)
ax1.set_title('ADAUSDT')
ax2.plot(df['RSI'], color='red', linewidth=1.5)
ax2.axhline(30, linestyle='--', linewidth=1.5, color='grey')
ax2.axhline(70, linestyle='--', linewidth=1.5, color='grey')
ax2.set_title('ADA RSI')

plt.show()

Faire une visualisation de mon graphique ci-dessous 0, 1, 2 points vous montrera comment je les ai imaginés. ROUGE signifie RSI supérieur à 70 et dans mon DF est noté 1, que vert signifie RSI en dessous de 30 et dans DF est noté 2 et tous les autres sont 0 comme valeurs entre 30 et 70 RSI (pas sur le graphique).

Source medium.com

Investissez avec l'IA
Comet by Perplexity
1 mois de Pro offert

Donnez votre avis

Soyez le 1er à noter cet article


Partagez cet article maintenant !

Envoyez simplement nos contenus crypto et finance à vos proches.