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.
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 datasetlogin = 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).
