💰 Vidanger tout le dépôt de crypto

Aujourd'hui, nous avons sur la table le projet jhonwick547/trading_bot.
À première vue, c'est une sérieuse prétention au succès. Un bot de trading automatique pour Binance, écrit en Python. Mais en réalité, c'est un manuel sur comment ne pas écrire un logiciel financier. Si vous l'exécutez sur un compte réel, le marché vous dévorera.

Quel est le cauchemar ? 🤡

1️⃣Machine Learning de Schrödinger
Dans le code, on importe fièrement sklearn et on charge un modèle :
self.model = joblib.load(model_path)

Mais dans la méthode generate_signals... elle n'est utilisée nulle part. 🤡
Les signaux sont générés via un ensemble de if de niveau 5e année : « Si RSI < 60 et MACD monte, achète ».
Pourquoi Random Forest ? Apparemment, pour que le ventilateur du portable ronronne de manière plus convaincante.

2️⃣ Course mortelle
Regardons la fonction execute_trade.
1. Le bot envoie un ordre au marché (create_market_buy_order).
2. Le bot essaie de placer un Stop Loss et un Take Profit par des requêtes séparées.

Question à un million : que se passe-t-il si entre les étapes 1 et 2 votre connexion Internet se coupe, le script plante ou Binance renvoie une erreur API ?
Réponse : Vous restez avec une position ouverte sans stop-loss. Une bougie dans le mauvais sens et bonjour la liquidation.
Dans les systèmes normaux, on utilise des ordres OCO (One Cancels the Other) ou on envoie une grille d'ordres en batch pour que l'entrée et le stop soient atomiques (ou au moins aussi proches que possible).

3️⃣ Mathématiques qui ne fonctionnent pas
Fonction de calcul de la position calculate_position_size :
risk_amount = balance * self.balance_pct  # 10% du dépôt
position_size = risk_amount / (entry_price - stop_loss)

L'auteur confond le risque par trade et le volume d'entrée.
Si entry_price est proche de stop_loss, le dénominateur tend vers zéro et la taille de la position s'envole dans l'espace. Il y a un min(), mais la logique même de calcul du volume à partir d'un risque fixe est mal implémentée. Au final, vous risquez soit des clopinettes, soit tout votre dépôt, selon la volatilité.

4️⃣ Double travail
Dans la boucle start_trading, le bot télécharge les bougies (fetch_data) et calcule les indicateurs pour vérifier le signal.
S'il y a un signal, il appelle execute_trade, où... il télécharge à nouveau les bougies et recalcule les indicateurs.
Apparemment, pour que Binance bannisse plus vite l'IP pour requêtes excessives.

5️⃣ Clés en dur
Dans if __name__ == "__main__":, les clés sont à écrire directement dans le code.
api_key = 'YOUR_API_KEY'
Jamais. Vous entendez ? Jamais ne stockez les secrets dans le code. Utilisez .env.

👨🏻‍⚖️ Verdict :
Extérieurement, ça ressemble à un bot de trading, mais en réalité, c'est un générateur de pertes aléatoires.

#griller_le_code