💀 SkullTrading V3 – Mode d’Emploi Complet
Guide Détaillé du Système de Trading Multi-Agents
Version: 3.0
Date: 28 Novembre 2025
Auteur: Conçu pour HB9HPG
Objectif: Comprendre en profondeur chaque composant du système
📋 Table des Matières
Partie 1 : Introduction et Concepts
Partie 2 : Les Agents d’Analyse Technique
- Agent RSI – Relative Strength Index
- Agent MACD – Moving Average Convergence Divergence
- Agent EMA – Exponential Moving Average
- Agent Volume – Analyse du Volume
- Agent Bollinger – Bandes de Bollinger
Partie 3 : Prise de Décision
- Agent de Consensus – Le Vote des Agents
- Agent de Risque – Protection du Capital
- Agent d’Exécution – Passage des Ordres
Partie 4 : Ordres OCO
Partie 5 : Configuration Complète
Partie 6 : Utilisation Pratique
PARTIE 1 : INTRODUCTION ET CONCEPTS
1. Introduction au Trading Automatisé
1.1 Qu’est-ce que le trading automatisé ?
Le trading automatisé consiste à utiliser un programme informatique pour analyser les marchés financiers et passer des ordres d’achat ou de vente sans intervention humaine. Le programme suit des règles prédéfinies basées sur l’analyse technique.
┌─────────────────────────────────────────────────────────────────────────────┐
│ TRADING MANUEL vs TRADING AUTOMATISÉ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ TRADING MANUEL: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 👤 Trader regarde les graphiques │ │
│ │ 👀 Analyse les indicateurs │ │
│ │ 🤔 Prend une décision (influencée par les émotions) │ │
│ │ ⌨️ Passe l'ordre manuellement │ │
│ │ 😰 Stress, fatigue, erreurs possibles │ │
│ │ ⏰ Limité aux heures où le trader est éveillé │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ TRADING AUTOMATISÉ (SkullTrading): │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 🤖 Le bot analyse les données en continu │ │
│ │ 📊 Calcule les indicateurs techniques │ │
│ │ 🧠 Prend une décision basée sur des règles strictes │ │
│ │ ⚡ Passe l'ordre instantanément │ │
│ │ 😎 Aucune émotion, discipline parfaite │ │
│ │ 🌙 Fonctionne 24h/24, 7j/7 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
1.2 Pourquoi l’analyse technique ?
L’analyse technique est l’étude des graphiques de prix et des indicateurs mathématiques pour prédire les mouvements futurs du marché. Elle repose sur trois principes :
-
Le prix intègre tout : Toutes les informations (nouvelles, sentiment, fondamentaux) sont déjà reflétées dans le prix.
-
Les prix évoluent en tendances : Une fois qu’une tendance est établie, elle a tendance à continuer.
-
L’histoire se répète : Les patterns de prix qui ont fonctionné dans le passé ont tendance à se reproduire.
1.3 Les indicateurs techniques
Un indicateur technique est une formule mathématique appliquée aux données de prix (Open, High, Low, Close, Volume) pour générer des signaux d’achat ou de vente.
┌─────────────────────────────────────────────────────────────────────────────┐
│ DONNÉES DE MARCHÉ (OHLCV) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Chaque bougie (candlestick) contient 5 informations : │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ │ ← HIGH (Plus haut de la période) │ │
│ │ │ │ │
│ │ ┌───┴───┐ ← CLOSE (Prix de clôture) │ │
│ │ │ │ │ │
│ │ │ CORPS │ ← Le corps montre l'écart Open-Close │ │
│ │ │ │ │ │
│ │ └───┬───┘ ← OPEN (Prix d'ouverture) │ │
│ │ │ │ │
│ │ │ ← LOW (Plus bas de la période) │ │
│ │ │ │
│ │ VOLUME = Nombre d'unités échangées pendant la période │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ Bougie VERTE : Close > Open (prix a monté) │
│ Bougie ROUGE : Close < Open (prix a baissé) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
2. Philosophie de SkullTrading
2.1 L’approche multi-agents
SkullTrading utilise 5 agents spécialisés qui analysent chacun un aspect différent du marché. C’est comme avoir 5 experts qui donnent leur avis avant de prendre une décision.
┌─────────────────────────────────────────────────────────────────────────────┐
│ LES 5 AGENTS D'ANALYSE │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 🔴 AGENT RSI │
│ "Le marché est-il suracheté ou survendu ?" │
│ Spécialité : Détecte les excès du marché │
│ │
│ 🟢 AGENT MACD │
│ "Le momentum change-t-il de direction ?" │
│ Spécialité : Détecte les changements de tendance │
│ │
│ 🔵 AGENT EMA │
│ "Quelle est la tendance actuelle ?" │
│ Spécialité : Identifie la direction du marché │
│ │
│ 🟡 AGENT VOLUME │
│ "Y a-t-il de la force derrière le mouvement ?" │
│ Spécialité : Confirme la validité des mouvements │
│ │
│ 🟣 AGENT BOLLINGER │
│ "Le prix est-il à un extrême statistique ?" │
│ Spécialité : Détecte les prix anormaux │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
2.2 Le consensus obligatoire
Aucun trade n’est exécuté sans l’accord de plusieurs agents. C’est la force du système : réduire les faux signaux.
┌─────────────────────────────────────────────────────────────────────────────┐
│ SYSTÈME DE CONSENSUS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Exemple de vote : │
│ │
│ Agent RSI : BUY (confiance 70%) ✅ │
│ Agent MACD : BUY (confiance 85%) ✅ │
│ Agent EMA : HOLD (confiance 50%) ➖ │
│ Agent Volume : BUY (confiance 60%) ✅ │
│ Agent Bollinger: HOLD (confiance 45%) ➖ │
│ │
│ ───────────────────────────────────────────────────── │
│ Agents pour BUY : 3 sur 5 │
│ Score moyen : (70 + 85 + 60) / 3 = 71.7% │
│ │
│ Configuration requise : │
│ • min_agents_agree = 2 ✅ (3 ≥ 2) │
│ • min_buy_score = 0.5 ✅ (71.7% ≥ 50%) │
│ │
│ DÉCISION : BUY APPROUVÉ ✅ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
2.3 La stratégie asymétrique : Perdre peu, Gagner beaucoup
Le secret de la rentabilité n’est pas d’avoir raison à chaque fois, mais de gagner plus quand on a raison que de perdre quand on a tort.
┌─────────────────────────────────────────────────────────────────────────────┐
│ STRATÉGIE ASYMÉTRIQUE EXPLIQUÉE │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ CONFIGURATION PAR DÉFAUT : │
│ • Stop-Loss : -1.5% (on coupe les pertes rapidement) │
│ • Take-Profit : +4.5% (on laisse courir les gains) │
│ • Ratio Risk/Reward : 1:3 │
│ │
│ ═══════════════════════════════════════════════════════════════════════ │
│ │
│ SIMULATION SUR 10 TRADES : │
│ │
│ Si vous avez raison seulement 50% du temps : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 5 trades PERDANTS × (-1.5%) = -7.5% │ │
│ │ 5 trades GAGNANTS × (+4.5%) = +22.5% │ │
│ │ ────────────────────────────────────────────── │ │
│ │ RÉSULTAT NET : +15% de gain sur le capital │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ Si vous avez raison seulement 40% du temps : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 6 trades PERDANTS × (-1.5%) = -9% │ │
│ │ 4 trades GAGNANTS × (+4.5%) = +18% │ │
│ │ ────────────────────────────────────────────────────────── │ │
│ │ RÉSULTAT NET : +9% de gain sur le capital │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ Si vous avez raison seulement 30% du temps : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 7 trades PERDANTS × (-1.5%) = -10.5% │ │
│ │ 3 trades GAGNANTS × (+4.5%) = +13.5% │ │
│ │ ────────────────────────────────────────────────────────── │ │
│ │ RÉSULTAT NET : +3% de gain sur le capital │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ══► Même avec seulement 30% de réussite, on reste RENTABLE ! │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
3. Comment fonctionne le système
3.1 Le cycle de trading
Toutes les 60 secondes (configurable), le système exécute un cycle complet :
┌─────────────────────────────────────────────────────────────────────────────┐
│ CYCLE DE TRADING │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ÉTAPE 1 : COLLECTE DES DONNÉES (5 secondes) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ • Connexion à Binance API │ │
│ │ • Récupération des 100 dernières bougies (15 minutes) │ │
│ │ • Données : Open, High, Low, Close, Volume │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ÉTAPE 2 : ANALYSE PAR LES AGENTS (2 secondes) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ • Agent RSI calcule le RSI et génère un signal │ │
│ │ • Agent MACD calcule le MACD et génère un signal │ │
│ │ • Agent EMA calcule les EMAs et génère un signal │ │
│ │ • Agent Volume analyse le volume et génère un signal │ │
│ │ • Agent Bollinger calcule les bandes et génère un signal │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ÉTAPE 3 : CONSENSUS (1 seconde) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ • L'agent de consensus collecte tous les signaux │ │
│ │ • Calcule le score pondéré pour BUY et SELL │ │
│ │ • Vérifie si les conditions sont remplies │ │
│ │ • Décide : BUY, SELL, ou HOLD │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ÉTAPE 4 : GESTION DES RISQUES (1 seconde) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ • Vérifie les limites (trades/jour, drawdown, etc.) │ │
│ │ • Calcule la taille de position optimale │ │
│ │ • Définit les niveaux Stop-Loss et Take-Profit │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ÉTAPE 5 : EXÉCUTION (2 secondes) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ • Passe l'ordre principal (MARKET BUY/SELL) │ │
│ │ • Place l'ordre OCO (Stop-Loss + Take-Profit) │ │
│ │ • Enregistre le trade dans l'historique │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ÉTAPE 6 : NOTIFICATION (1 seconde) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ • Envoie une notification Telegram avec les détails │ │
│ │ • Affiche l'heure en fuseau horaire Suisse (CET) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ATTENTE jusqu'au prochain cycle (60 secondes par défaut) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
3.2 Les signaux possibles
Chaque agent peut émettre l’un des 5 signaux suivants :
| Signal | Signification | Action suggérée |
|---|---|---|
| STRONG_BUY | Signal d’achat très fort | Acheter avec confiance élevée |
| BUY | Signal d’achat | Acheter |
| NEUTRAL | Aucune direction claire | Ne rien faire |
| SELL | Signal de vente | Vendre |
| STRONG_SELL | Signal de vente très fort | Vendre avec confiance élevée |
3.3 La confiance
Chaque signal est accompagné d’un niveau de confiance entre 0% et 100% :
- 90-100% : Signal très fiable
- 70-89% : Signal fiable
- 50-69% : Signal modéré
- 30-49% : Signal faible
- 0-29% : Signal très faible (ignoré)
PARTIE 2 : LES AGENTS D’ANALYSE TECHNIQUE
4. Agent RSI – Relative Strength Index
4.1 Qu’est-ce que le RSI ?
Le RSI (Relative Strength Index) ou Indice de Force Relative est un indicateur de momentum créé par J. Welles Wilder en 1978. Il mesure la vitesse et l’amplitude des mouvements de prix pour identifier si un actif est suracheté (trop cher) ou survendu (trop bon marché).
4.2 Comment le RSI est-il calculé ?
┌─────────────────────────────────────────────────────────────────────────────┐
│ CALCUL DU RSI │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ FORMULE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 100 │ │
│ │ RSI = 100 - ───────────────────── │ │
│ │ 1 + RS │ │
│ │ │ │
│ │ Où RS (Relative Strength) = Moyenne des hausses │ │
│ │ ───────────────────── │ │
│ │ Moyenne des baisses │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ EXEMPLE CONCRET (sur 14 périodes) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Jour 1: +100 Jour 8: -50 │ │
│ │ Jour 2: +200 Jour 9: +150 │ │
│ │ Jour 3: -80 Jour 10: -30 │ │
│ │ Jour 4: +50 Jour 11: +80 │ │
│ │ Jour 5: -120 Jour 12: -60 │ │
│ │ Jour 6: +180 Jour 13: +100 │ │
│ │ Jour 7: +90 Jour 14: -40 │ │
│ │ │ │
│ │ Hausses: 100+200+50+180+90+150+80+100 = 950 │ │
│ │ Baisses: 80+120+50+30+60+40 = 380 │ │
│ │ │ │
│ │ Moyenne hausses = 950/14 = 67.86 │ │
│ │ Moyenne baisses = 380/14 = 27.14 │ │
│ │ │ │
│ │ RS = 67.86 / 27.14 = 2.50 │ │
│ │ │ │
│ │ RSI = 100 - (100 / (1 + 2.50)) │ │
│ │ RSI = 100 - (100 / 3.50) │ │
│ │ RSI = 100 - 28.57 │ │
│ │ RSI = 71.43 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
4.3 Comment interpréter le RSI ?
Le RSI oscille toujours entre 0 et 100. Voici comment l’interpréter :
┌─────────────────────────────────────────────────────────────────────────────┐
│ ZONES DU RSI │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 100 ┬──────────────────────────────────────────────────────────────── │
│ │ │
│ │ ZONE EXTRÊME SURACHAT (RSI > 80) │
│ │ ════════════════════════════════ │
│ │ • Le prix a trop monté trop vite │
│ │ • Forte probabilité de correction à la baisse │
│ │ • Signal : STRONG_SELL │
│ │ • L'agent RSI peut activer son VETO │
│ │ │
│ 80 ├──────────────────────────────────────────────────────────────── │
│ │ │
│ │ ZONE SURACHAT (RSI entre 70 et 80) │
│ │ ══════════════════════════════════ │
│ │ • Le prix est élevé │
│ │ • Prudence recommandée pour les achats │
│ │ • Signal : SELL │
│ │ │
│ 70 ├──────────────────────────────────────────────────────────────── │
│ │ │
│ │ ZONE NEUTRE (RSI entre 30 et 70) │
│ │ ════════════════════════════════ │
│ │ • Le marché est en équilibre │
│ │ • Pas d'excès dans un sens ou l'autre │
│ │ • Signal : NEUTRAL │
│ │ │
│ 50 │ - - - - - - - - - - - - - - - - - - - - (ligne médiane) │
│ │ │
│ 30 ├──────────────────────────────────────────────────────────────── │
│ │ │
│ │ ZONE SURVENTE (RSI entre 20 et 30) │
│ │ ══════════════════════════════════ │
│ │ • Le prix est bas │
│ │ • Opportunité d'achat potentielle │
│ │ • Signal : BUY │
│ │ │
│ 20 ├──────────────────────────────────────────────────────────────── │
│ │ │
│ │ ZONE EXTRÊME SURVENTE (RSI < 20) │
│ │ ════════════════════════════════ │
│ │ • Le prix a trop baissé trop vite │
│ │ • Forte probabilité de rebond à la hausse │
│ │ • Signal : STRONG_BUY │
│ │ • L'agent RSI peut activer son VETO │
│ │ │
│ 0 ┴──────────────────────────────────────────────────────────────── │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
4.4 Les divergences RSI
Une divergence se produit quand le prix et le RSI ne vont pas dans la même direction. C’est souvent un signal puissant de retournement.
┌─────────────────────────────────────────────────────────────────────────────┐
│ DIVERGENCES RSI │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ DIVERGENCE HAUSSIÈRE (Signal d'achat) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ PRIX: ╲ │ │
│ │ ╲ │ │
│ │ ╲ Le prix fait des plus bas │ │
│ │ │ │
│ │ RSI: ╱ │ │
│ │ ╱ │ │
│ │ ╱ Mais le RSI fait des plus hauts │ │
│ │ │ │
│ │ ══► Le momentum devient positif malgré la baisse du prix │ │
│ │ ══► Signal d'achat : le prix va probablement remonter │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ DIVERGENCE BAISSIÈRE (Signal de vente) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ PRIX: ╱ │ │
│ │ ╱ │ │
│ │ ╱ Le prix fait des plus hauts │ │
│ │ │ │
│ │ RSI: ╲ │ │
│ │ ╲ │ │
│ │ ╲ Mais le RSI fait des plus bas │ │
│ │ │ │
│ │ ══► Le momentum devient négatif malgré la hausse du prix │ │
│ │ ══► Signal de vente : le prix va probablement redescendre │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
4.5 Le pouvoir de VETO du RSI
L’agent RSI a un pouvoir spécial : il peut bloquer un trade si le marché est dans une zone extrême. C’est une protection contre les trades à contre-tendance.
┌─────────────────────────────────────────────────────────────────────────────┐
│ VETO RSI │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ SITUATION : Les autres agents veulent acheter (BUY) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Agent MACD : BUY (confiance 80%) ✅ │ │
│ │ Agent EMA : BUY (confiance 75%) ✅ │ │
│ │ Agent Volume : BUY (confiance 65%) ✅ │ │
│ │ Agent Bollinger: BUY (confiance 70%) ✅ │ │
│ │ Agent RSI : RSI = 85 (SURACHAT EXTRÊME) │ │
│ │ │ │
│ │ ══► L'agent RSI active son VETO ! 🚫 │ │
│ │ │ │
│ │ Raison : "Acheter quand le RSI est à 85 est très risqué. │ │
│ │ Le marché est suracheté et va probablement corriger." │ │
│ │ │ │
│ │ RÉSULTAT : Trade BLOQUÉ malgré l'accord des autres agents │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ Le VETO s'active quand : │
│ • RSI > 80 et on veut acheter (BUY) │
│ • RSI < 20 et on veut vendre (SELL) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
4.6 Paramètres configurables du RSI
| Paramètre | Valeur par défaut | Description | Où modifier |
|---|---|---|---|
period |
14 | Nombre de périodes pour le calcul | config/settings.py |
overbought |
70 | Seuil de surachat | config/settings.py |
oversold |
30 | Seuil de survente | config/settings.py |
extreme_overbought |
80 | Seuil de surachat extrême (VETO) | config/settings.py |
extreme_oversold |
20 | Seuil de survente extrême (VETO) | config/settings.py |
weight |
1.0 | Poids dans le consensus | config/settings.py |
4.7 Tableau des signaux RSI
| Condition | Signal | Confiance | VETO |
|---|---|---|---|
| RSI < 20 | STRONG_BUY | 90% | Actif contre SELL |
| RSI entre 20-30 | BUY | 70% | Non |
| RSI entre 30-70 | NEUTRAL | 50% | Non |
| RSI entre 70-80 | SELL | 70% | Non |
| RSI > 80 | STRONG_SELL | 90% | Actif contre BUY |
| Divergence haussière | BUY | +15% bonus | Non |
| Divergence baissière | SELL | +15% bonus | Non |
5. Agent MACD – Moving Average Convergence Divergence
5.1 Qu’est-ce que le MACD ?
Le MACD (Moving Average Convergence Divergence) ou Convergence Divergence des Moyennes Mobiles est un indicateur de momentum créé par Gerald Appel en 1979. Il mesure la relation entre deux moyennes mobiles exponentielles pour identifier les changements de tendance et le momentum.
5.2 Les composants du MACD
Le MACD est composé de trois éléments :
┌─────────────────────────────────────────────────────────────────────────────┐
│ COMPOSANTS DU MACD │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. LIGNE MACD (bleue) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ MACD = EMA(12) - EMA(26) │ │
│ │ │ │
│ │ • EMA(12) = Moyenne mobile exponentielle sur 12 périodes │ │
│ │ • EMA(26) = Moyenne mobile exponentielle sur 26 périodes │ │
│ │ │ │
│ │ Interprétation : │ │
│ │ • MACD > 0 : L'EMA rapide est AU-DESSUS de l'EMA lente │ │
│ │ = Momentum HAUSSIER │ │
│ │ • MACD < 0 : L'EMA rapide est EN-DESSOUS de l'EMA lente │ │
│ │ = Momentum BAISSIER │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ 2. LIGNE DE SIGNAL (orange) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Signal = EMA(9) du MACD │ │
│ │ │ │
│ │ • C'est une moyenne mobile du MACD lui-même │ │
│ │ • Elle "lisse" le MACD pour réduire les faux signaux │ │
│ │ • Les croisements MACD/Signal génèrent les signaux │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ 3. HISTOGRAMME (barres vertes/rouges) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Histogramme = MACD - Signal │ │
│ │ │ │
│ │ • Représente la DISTANCE entre le MACD et le Signal │ │
│ │ • Barres vertes : MACD > Signal (momentum haussier) │ │
│ │ • Barres rouges : MACD < Signal (momentum baissier) │ │
│ │ • Barres qui grandissent : momentum qui s'accélère │ │
│ │ • Barres qui rétrécissent : momentum qui ralentit │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
5.3 Comment le MACD est-il calculé ?
┌─────────────────────────────────────────────────────────────────────────────┐
│ CALCUL DU MACD │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ÉTAPE 1 : Calculer l'EMA(12) - Moyenne rapide │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Multiplicateur = 2 / (12 + 1) = 0.1538 │ │
│ │ │ │
│ │ EMA_aujourd'hui = (Prix × Multiplicateur) │ │
│ │ + (EMA_hier × (1 - Multiplicateur)) │ │
│ │ │ │
│ │ Exemple si Prix = 95,000 et EMA_hier = 94,800 : │ │
│ │ EMA = (95,000 × 0.1538) + (94,800 × 0.8462) │ │
│ │ EMA = 14,611 + 80,220.96 = 94,831.96 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ÉTAPE 2 : Calculer l'EMA(26) - Moyenne lente │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Multiplicateur = 2 / (26 + 1) = 0.0741 │ │
│ │ (Même formule, mais réagit plus lentement) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ÉTAPE 3 : Calculer la ligne MACD │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ MACD = EMA(12) - EMA(26) │ │
│ │ │ │
│ │ Exemple : EMA(12) = 94,831.96 et EMA(26) = 94,500 │ │
│ │ MACD = 94,831.96 - 94,500 = 331.96 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ÉTAPE 4 : Calculer la ligne de Signal │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Signal = EMA(9) du MACD │ │
│ │ Multiplicateur = 2 / (9 + 1) = 0.2 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ÉTAPE 5 : Calculer l'Histogramme │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Histogramme = MACD - Signal │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
5.4 Les signaux du MACD
┌─────────────────────────────────────────────────────────────────────────────┐
│ SIGNAUX DU MACD │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ SIGNAL 1 : CROISEMENT HAUSSIER (Signal d'ACHAT) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Signal ────────────── │ │
│ │ ╲ │ │
│ │ ╲ │ │
│ │ MACD ───────────────╳──────────── │ │
│ │ ╲ │ │
│ │ ╲ │ │
│ │ │ │
│ │ Le MACD croise la ligne de Signal VERS LE HAUT │ │
│ │ ══► Signal d'ACHAT (BUY) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ SIGNAL 2 : CROISEMENT BAISSIER (Signal de VENTE) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ MACD ───────────────╳──────────── │ │
│ │ ╱ ╲ │ │
│ │ ╱ ╲ │ │
│ │ Signal ────╱─────╲─────── │ │
│ │ │ │
│ │ Le MACD croise la ligne de Signal VERS LE BAS │ │
│ │ ══► Signal de VENTE (SELL) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ SIGNAL 3 : CROISEMENT DE LA LIGNE ZÉRO │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ════════════════════════ LIGNE ZÉRO ══════════════════════════ │ │
│ │ ╱ │ │
│ │ ╱ MACD passe au-dessus de zéro │ │
│ │ MACD ────────────────────╱ ══► Confirmation HAUSSIÈRE │ │
│ │ │ │
│ │ ════════════════════════ LIGNE ZÉRO ══════════════════════════ │ │
│ │ ╲ │ │
│ │ ╲ MACD passe en-dessous de zéro │ │
│ │ MACD ────────────────────────╲ ══► Confirmation BAISSIÈRE │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ SIGNAL 4 : ANALYSE DE L'HISTOGRAMME │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Histogramme POSITIF et CROISSANT : │ │
│ │ ▓▓ │ │
│ │ ▓▓▓▓ │ │
│ │ ▓▓▓▓▓▓ ══► Momentum HAUSSIER qui s'ACCÉLÈRE │ │
│ │ ▓▓▓▓▓▓▓▓ │ │
│ │ │ │
│ │ Histogramme POSITIF et DÉCROISSANT : │ │
│ │ ▓▓▓▓▓▓▓▓ │ │
│ │ ▓▓▓▓▓▓ ══► Momentum haussier qui RALENTIT │ │
│ │ ▓▓▓▓ (possible retournement) │ │
│ │ ▓▓ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
5.5 Paramètres configurables du MACD
| Paramètre | Valeur par défaut | Description | Où modifier |
|---|---|---|---|
fast_period |
12 | Période de l’EMA rapide | config/settings.py |
slow_period |
26 | Période de l’EMA lente | config/settings.py |
signal_period |
9 | Période de la ligne de signal | config/settings.py |
weight |
1.0 | Poids dans le consensus | config/settings.py |
5.6 Tableau des signaux MACD
| Condition | Signal | Confiance |
|---|---|---|
| Croisement haussier + histogramme croissant | STRONG_BUY | 85% |
| Croisement haussier simple | BUY | 70% |
| MACD > Signal (pas de croisement) | BUY faible | 55% |
| Croisement baissier + histogramme décroissant | STRONG_SELL | 85% |
| Croisement baissier simple | SELL | 70% |
| MACD < Signal (pas de croisement) | SELL faible | 55% |
| Divergence détectée | +10% bonus | – |
6. Agent EMA – Exponential Moving Average
6.1 Qu’est-ce qu’une EMA ?
L’EMA (Exponential Moving Average) ou Moyenne Mobile Exponentielle est un type de moyenne mobile qui donne plus de poids aux prix récents. Elle réagit plus vite aux changements de prix qu’une moyenne mobile simple (SMA).
6.2 Différence entre SMA et EMA
┌─────────────────────────────────────────────────────────────────────────────┐
│ SMA vs EMA │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ SMA (Simple Moving Average) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ SMA = (P1 + P2 + P3 + ... + Pn) / n │ │
│ │ │ │
│ │ Tous les prix ont le MÊME poids │ │
│ │ Exemple SMA(5) : (100 + 102 + 98 + 105 + 103) / 5 = 101.6 │ │
│ │ │ │
│ │ + Simple à comprendre │ │
│ │ - Réagit lentement aux changements │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ EMA (Exponential Moving Average) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ EMA = (Prix × k) + (EMA_précédent × (1 - k)) │ │
│ │ k = 2 / (n + 1) │ │
│ │ │ │
│ │ Les prix RÉCENTS ont PLUS de poids │ │
│ │ │ │
│ │ + Réagit rapidement aux changements │ │
│ │ + Meilleur pour le trading court terme │ │
│ │ - Plus complexe à calculer │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ VISUALISATION : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Prix: ═══════════════════════════════════════════════════ │ │
│ │ ─────────────────────────────────╱╲╱╲╱╲╱╲ │ │
│ │ │ │
│ │ SMA: ─────────────────────────────────────────╱╲╱╲ │ │
│ │ (suit le prix mais avec du retard) │ │
│ │ │ │
│ │ EMA: ─────────────────────────────────╱╲╱╲╱╲╱╲ │ │
│ │ (suit le prix de plus près) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
6.3 Les 4 EMAs utilisées par l’agent
L’agent EMA utilise 4 moyennes mobiles de périodes différentes pour avoir une vue complète de la tendance :
┌─────────────────────────────────────────────────────────────────────────────┐
│ LES 4 EMAs │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ EMA 9 (Ultra court terme) ───────────────────────────────────────── │
│ • Réagit très vite aux mouvements │
│ • Utilisée pour les signaux de trading rapides │
│ • Se retourne souvent (beaucoup de bruit) │
│ │
│ EMA 21 (Court terme) ────────────────────────────────────────────── │
│ • Moyenne de 21 périodes (environ 1 mois de trading) │
│ • Bon compromis entre réactivité et fiabilité │
│ • Souvent utilisée comme support/résistance dynamique │
│ │
│ EMA 50 (Moyen terme) ────────────────────────────────────────────── │
│ • Indique la tendance de moyen terme │
│ • Très respectée par les traders institutionnels │
│ • Les croisements avec l'EMA 200 sont des signaux majeurs │
│ │
│ EMA 200 (Long terme / Tendance majeure) ─────────────────────────── │
│ • LA référence pour la tendance de fond │
│ • Prix > EMA200 = Marché HAUSSIER │
│ • Prix < EMA200 = Marché BAISSIER │
│ • Très respectée, souvent zone de rebond │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
6.4 Les croisements importants
┌─────────────────────────────────────────────────────────────────────────────┐
│ CROISEMENTS DES EMAs │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ GOLDEN CROSS (Croix Dorée) - Signal d'ACHAT MAJEUR │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ╱── EMA 50 │ │
│ │ ╱ │ │
│ │ ─────────────────────────────╳───────── │ │
│ │ ╱ │ │
│ │ ╱ │ │
│ │ ─────────────────────────────────────────── EMA 200 │ │
│ │ │ │
│ │ L'EMA 50 croise l'EMA 200 VERS LE HAUT │ │
│ │ │ │
│ │ ══► Signal HAUSSIER très puissant │ │
│ │ ══► Le marché entre probablement dans une tendance haussière │ │
│ │ ══► Historiquement suivi de hausses importantes │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ DEATH CROSS (Croix de la Mort) - Signal de VENTE MAJEUR │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ─────────────────────────────────────────── EMA 200 │ │
│ │ ╲ │ │
│ │ ╲ │ │
│ │ ─────────────────────────────╳───────── │ │
│ │ ╲ │ │
│ │ ╲── EMA 50 │ │
│ │ │ │
│ │ L'EMA 50 croise l'EMA 200 VERS LE BAS │ │
│ │ │ │
│ │ ══► Signal BAISSIER très puissant │ │
│ │ ══► Le marché entre probablement dans une tendance baissière │ │
│ │ ══► Historiquement suivi de baisses importantes │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
6.5 L’alignement des EMAs
┌─────────────────────────────────────────────────────────────────────────────┐
│ ALIGNEMENT DES EMAs │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ TENDANCE HAUSSIÈRE PARFAITE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Prix ════════════════════════════════ (Plus haut) │ │
│ │ EMA 9 ────────────────────────────────── │ │
│ │ EMA 21 ──────────────────────────────────── │ │
│ │ EMA 50 ────────────────────────────────────── │ │
│ │ EMA 200 ────────────────────────────────────── (Plus bas) │ │
│ │ │ │
│ │ Prix > EMA9 > EMA21 > EMA50 > EMA200 │ │
│ │ │ │
│ │ ══► Toutes les EMAs sont alignées = Tendance FORTE │ │
│ │ ══► Signal : STRONG_BUY │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ TENDANCE BAISSIÈRE PARFAITE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ EMA 200 ════════════════════════════════ (Plus haut) │ │
│ │ EMA 50 ────────────────────────────────────── │ │
│ │ EMA 21 ──────────────────────────────────── │ │
│ │ EMA 9 ────────────────────────────────── │ │
│ │ Prix ────────────────────────────────────── (Plus bas) │ │
│ │ │ │
│ │ Prix < EMA9 < EMA21 < EMA50 < EMA200 │ │
│ │ │ │
│ │ ══► Toutes les EMAs sont alignées inversement = Tendance FORTE │ │
│ │ ══► Signal : STRONG_SELL │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
6.6 Paramètres configurables de l’agent EMA
| Paramètre | Valeur par défaut | Description | Où modifier |
|---|---|---|---|
fast_ema |
9 | Période de l’EMA ultra rapide | config/settings.py |
slow_ema |
21 | Période de l’EMA court terme | config/settings.py |
trend_ema |
50 | Période de l’EMA moyen terme | config/settings.py |
long_trend_ema |
200 | Période de l’EMA long terme | config/settings.py |
weight |
1.0 | Poids dans le consensus | config/settings.py |
6.7 Tableau des signaux EMA
| Condition | Signal | Confiance |
|---|---|---|
| Golden Cross (EMA50 croise EMA200 vers le haut) | STRONG_BUY | 90% |
| Death Cross (EMA50 croise EMA200 vers le bas) | STRONG_SELL | 90% |
| Prix > toutes les EMAs alignées | BUY | 75% |
| Prix < toutes les EMAs alignées | SELL | 75% |
| EMA9 croise EMA21 vers le haut | BUY | 65% |
| EMA9 croise EMA21 vers le bas | SELL | 65% |
| EMAs emmêlées (pas de direction claire) | NEUTRAL | 50% |
7. Agent Volume – Analyse du Volume
7.1 Qu’est-ce que le volume ?
Le volume représente le nombre d’unités échangées pendant une période donnée. C’est une mesure de l’activité et de l’intérêt des participants du marché.
┌─────────────────────────────────────────────────────────────────────────────┐
│ IMPORTANCE DU VOLUME │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ "Le volume précède le prix" │
│ - Dicton de Wall Street │
│ │
│ Le volume est comme le CARBURANT d'un mouvement de prix : │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Prix qui MONTE + Volume ÉLEVÉ │ │
│ │ ══► Mouvement FORT et CONFIRMÉ │ │
│ │ ══► La hausse est soutenue par l'intérêt des acheteurs │ │
│ │ │ │
│ │ Prix qui MONTE + Volume FAIBLE │ │
│ │ ══► Mouvement SUSPECT │ │
│ │ ══► La hausse manque de conviction, possible retournement │ │
│ │ │ │
│ │ Prix qui BAISSE + Volume ÉLEVÉ │ │
│ │ ══► Panique / Capitulation │ │
│ │ ══► Possible point de retournement (bottom) │ │
│ │ │ │
│ │ Prix qui BAISSE + Volume FAIBLE │ │
│ │ ══► Simple correction technique │ │
│ │ ══► La tendance de fond reste probablement intacte │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
7.2 L’indicateur OBV (On-Balance Volume)
L’agent Volume utilise l’OBV pour analyser le flux de volume :
┌─────────────────────────────────────────────────────────────────────────────┐
│ OBV - ON-BALANCE VOLUME │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ FORMULE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Si le prix de clôture MONTE par rapport à hier : │ │
│ │ OBV = OBV_hier + Volume_aujourd'hui │ │
│ │ │ │
│ │ Si le prix de clôture BAISSE par rapport à hier : │ │
│ │ OBV = OBV_hier - Volume_aujourd'hui │ │
│ │ │ │
│ │ Si le prix est IDENTIQUE : │ │
│ │ OBV = OBV_hier │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ EXEMPLE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Jour 1: Prix monte, Volume = 1000 → OBV = 0 + 1000 = 1000 │ │
│ │ Jour 2: Prix monte, Volume = 1500 → OBV = 1000 + 1500 = 2500 │ │
│ │ Jour 3: Prix baisse, Volume = 800 → OBV = 2500 - 800 = 1700 │ │
│ │ Jour 4: Prix monte, Volume = 2000 → OBV = 1700 + 2000 = 3700 │ │
│ │ Jour 5: Prix baisse, Volume = 500 → OBV = 3700 - 500 = 3200 │ │
│ │ │ │
│ │ L'OBV global MONTE = Plus de volume sur les jours de hausse │ │
│ │ ══► Signal HAUSSIER (accumulation) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ INTERPRÉTATION : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ OBV qui MONTE : │ │
│ │ • Plus de volume les jours de hausse │ │
│ │ • Les acheteurs sont actifs = ACCUMULATION │ │
│ │ • Signal haussier pour le prix │ │
│ │ │ │
│ │ OBV qui BAISSE : │ │
│ │ • Plus de volume les jours de baisse │ │
│ │ • Les vendeurs sont actifs = DISTRIBUTION │ │
│ │ • Signal baissier pour le prix │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
7.3 Les pics de volume
┌─────────────────────────────────────────────────────────────────────────────┐
│ PICS DE VOLUME │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Un PIC DE VOLUME = Volume nettement supérieur à la moyenne │
│ │
│ Comment le détecter : │
│ Volume actuel > (Moyenne 20 périodes × 1.5) │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Volume: │ │
│ │ │ │
│ │ ▓▓▓ │ │
│ │ ▓▓▓ ← Pic de volume (signal important) │ │
│ │ ▓▓▓ │ │
│ │ ▓ ▓▓ ▓▓▓ ▓ │ │
│ │ ▓ ▓▓ ▓▓▓ ▓▓ ▓ │ │
│ │ ▓▓ ▓▓ ▓ ▓▓▓ ▓▓ ▓▓ ▓ │ │
│ │ ▓▓ ▓▓ ▓ ▓▓▓ ▓▓ ▓▓ ▓▓ ▓▓ │ │
│ │ ▓▓ ▓▓ ▓▓▓▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ │ │
│ │ ────────────────────────────── Moyenne │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ INTERPRÉTATION DES PICS : │
│ │
│ • Pic + Prix qui MONTE = Confirmation de la hausse (BUY) │
│ • Pic + Prix qui BAISSE = Possible capitulation (BUY potentiel) │
│ • Pic après une longue tendance = Possible épuisement │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
7.4 Paramètres configurables de l’agent Volume
| Paramètre | Valeur par défaut | Description | Où modifier |
|---|---|---|---|
volume_ma_period |
20 | Période pour la moyenne du volume | config/settings.py |
volume_spike_threshold |
1.5 | Multiplicateur pour détecter un pic | config/settings.py |
obv_ma_period |
20 | Période pour la moyenne de l’OBV | config/settings.py |
weight |
1.0 | Poids dans le consensus | config/settings.py |
7.5 Tableau des signaux Volume
| Condition | Signal | Confiance |
|---|---|---|
| OBV monte + Prix monte + Pic volume | STRONG_BUY | 80% |
| OBV monte + Prix monte | BUY | 65% |
| OBV baisse + Prix baisse + Pic volume | STRONG_SELL | 80% |
| OBV baisse + Prix baisse | SELL | 65% |
| OBV diverge du prix (haussier) | BUY | 70% |
| OBV diverge du prix (baissier) | SELL | 70% |
| Volume faible | NEUTRAL | 40% |
8. Agent Bollinger – Bandes de Bollinger
8.1 Que sont les Bandes de Bollinger ?
Les Bandes de Bollinger ont été créées par John Bollinger dans les années 1980. C’est un indicateur de volatilité qui crée un « tunnel » autour du prix. Ce tunnel s’élargit quand le marché est volatile et se rétrécit quand le marché est calme.
8.2 Composition des Bandes de Bollinger
┌─────────────────────────────────────────────────────────────────────────────┐
│ COMPOSITION DES BANDES DE BOLLINGER │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 3 LIGNES : │
│ │
│ 1. BANDE SUPÉRIEURE = SMA(20) + (2 × Écart-type) │
│ ═══════════════════════════════════════════════════════════════ │
│ • Limite haute du "tunnel" │
│ • Le prix la touche rarement │
│ • Si touchée = potentiellement suracheté │
│ │
│ 2. BANDE MÉDIANE (SMA 20) = Moyenne Mobile Simple sur 20 périodes │
│ ────────────────────────────────────────────────────────────── │
│ • Centre du tunnel │
│ • Souvent zone de support/résistance │
│ • Le prix oscille autour de cette ligne │
│ │
│ 3. BANDE INFÉRIEURE = SMA(20) - (2 × Écart-type) │
│ ═══════════════════════════════════════════════════════════════ │
│ • Limite basse du "tunnel" │
│ • Le prix la touche rarement │
│ • Si touchée = potentiellement survendu │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
8.3 Qu’est-ce que l’écart-type ?
┌─────────────────────────────────────────────────────────────────────────────┐
│ L'ÉCART-TYPE EXPLIQUÉ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ L'écart-type mesure la DISPERSION des prix par rapport à la moyenne. │
│ │
│ FORMULE SIMPLIFIÉE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. Calculer la moyenne des prix │ │
│ │ 2. Pour chaque prix, calculer (prix - moyenne)² │ │
│ │ 3. Faire la moyenne de ces carrés │ │
│ │ 4. Prendre la racine carrée du résultat │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ INTERPRÉTATION : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Écart-type PETIT = Prix regroupés autour de la moyenne │ │
│ │ = Marché CALME │ │
│ │ = Bandes SERRÉES │ │
│ │ │ │
│ │ Écart-type GRAND = Prix éloignés de la moyenne │ │
│ │ = Marché VOLATILE │ │
│ │ = Bandes ÉCARTÉES │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ STATISTIQUEMENT : │
│ • 68% du temps, le prix est à ±1 écart-type de la moyenne │
│ • 95% du temps, le prix est à ±2 écarts-types de la moyenne │
│ • 99.7% du temps, le prix est à ±3 écarts-types de la moyenne │
│ │
│ ══► Les bandes à 2 écarts-types capturent 95% des mouvements │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
8.4 Comment interpréter les Bandes de Bollinger ?
┌─────────────────────────────────────────────────────────────────────────────┐
│ INTERPRÉTATION DES BANDES DE BOLLINGER │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ SCÉNARIO 1 : Prix touche la BANDE SUPÉRIEURE │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ═════════════╗════════════════════ Bande supérieure │ │
│ │ ║ ← Prix touche ici │ │
│ │ ─────────────╫──────────────────── Bande médiane │ │
│ │ │ │
│ │ ═══════════════════════════════════ Bande inférieure │ │
│ │ │ │
│ │ Interprétation : │ │
│ │ • Le prix est "statistiquement haut" │ │
│ │ • Potentiel de retour vers la moyenne │ │
│ │ • Signal : SELL ou NEUTRAL │ │
│ │ │ │
│ │ ATTENTION : En tendance forte, le prix peut "surfer" sur la │ │
│ │ bande supérieure pendant longtemps ! │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ SCÉNARIO 2 : Prix touche la BANDE INFÉRIEURE │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ═══════════════════════════════════ Bande supérieure │ │
│ │ │ │
│ │ ─────────────────────────────────── Bande médiane │ │
│ │ ║ │ │
│ │ ═════════════╝════════════════════ Bande inférieure │ │
│ │ ↑ Prix touche ici │ │
│ │ │ │
│ │ Interprétation : │ │
│ │ • Le prix est "statistiquement bas" │ │
│ │ • Potentiel de rebond vers la moyenne │ │
│ │ • Signal : BUY ou NEUTRAL │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ SCÉNARIO 3 : Le SQUEEZE (Compression) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ════╗ ╔════════════════════ │ │
│ │ ╠══════════════════════╣ │ │
│ │ ════╝ Squeeze ╚════════════════════ │ │
│ │ (compression) Breakout ! │ │
│ │ │ │
│ │ Quand les bandes se resserrent beaucoup : │ │
│ │ • Le marché accumule de l'énergie │ │
│ │ • Un mouvement explosif se prépare │ │
│ │ • La direction n'est pas connue d'avance │ │
│ │ │ │
│ │ Signal : NEUTRAL mais ALERTE (surveiller le breakout) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
8.5 Le %B (Pourcentage B)
L’agent Bollinger utilise aussi le %B qui indique la position du prix par rapport aux bandes :
┌─────────────────────────────────────────────────────────────────────────────┐
│ LE %B EXPLIQUÉ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ FORMULE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Prix - Bande_Inférieure │ │
│ │ %B = ────────────────────────────────── │ │
│ │ Bande_Supérieure - Bande_Inférieure │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ INTERPRÉTATION : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ %B > 1.0 : Prix AU-DESSUS de la bande supérieure │ │
│ │ ══► TRÈS suracheté (STRONG_SELL) │ │
│ │ │ │
│ │ %B = 1.0 : Prix SUR la bande supérieure │ │
│ │ ══► Suracheté (SELL) │ │
│ │ │ │
│ │ %B = 0.8 : Prix proche de la bande supérieure │ │
│ │ ══► Tendance à surveiller │ │
│ │ │ │
│ │ %B = 0.5 : Prix AU MILIEU (sur la bande médiane) │ │
│ │ ══► Neutre │ │
│ │ │ │
│ │ %B = 0.2 : Prix proche de la bande inférieure │ │
│ │ ══► Tendance à surveiller │ │
│ │ │ │
│ │ %B = 0.0 : Prix SUR la bande inférieure │ │
│ │ ══► Survendu (BUY) │ │
│ │ │ │
│ │ %B < 0.0 : Prix EN-DESSOUS de la bande inférieure │ │
│ │ ══► TRÈS survendu (STRONG_BUY) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
8.6 Paramètres configurables de l’agent Bollinger
| Paramètre | Valeur par défaut | Description | Où modifier |
|---|---|---|---|
period |
20 | Période pour la SMA centrale | config/settings.py |
std_dev |
2.0 | Nombre d’écarts-types pour les bandes | config/settings.py |
weight |
1.0 | Poids dans le consensus | config/settings.py |
8.7 Tableau des signaux Bollinger
| Condition | Signal | Confiance |
|---|---|---|
| %B < 0 (sous bande inférieure) | STRONG_BUY | 85% |
| %B entre 0-0.2 (proche bande inf.) | BUY | 70% |
| %B entre 0.2-0.8 (dans le tunnel) | NEUTRAL | 50% |
| %B entre 0.8-1.0 (proche bande sup.) | SELL | 70% |
| %B > 1 (au-dessus bande supérieure) | STRONG_SELL | 85% |
| Squeeze détecté | NEUTRAL + ALERTE | 60% |
PARTIE 3 : PRISE DE DÉCISION
9. Agent de Consensus – Le Vote des Agents
9.1 Rôle de l’agent de consensus
L’agent de consensus est le chef d’orchestre du système. Il collecte les signaux de tous les agents d’analyse et décide si un trade doit être exécuté.
┌─────────────────────────────────────────────────────────────────────────────┐
│ RÔLE DE L'AGENT DE CONSENSUS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ENTRÉES : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Agent RSI → Signal: BUY, Confiance: 70%, Poids: 1.0 │ │
│ │ Agent MACD → Signal: BUY, Confiance: 85%, Poids: 1.0 │ │
│ │ Agent EMA → Signal: HOLD, Confiance: 50%, Poids: 1.0 │ │
│ │ Agent Volume → Signal: BUY, Confiance: 60%, Poids: 1.0 │ │
│ │ Agent Bollinger→ Signal: HOLD, Confiance: 45%, Poids: 1.0 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ TRAITEMENT : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. Vérifier si un VETO est actif │ │
│ │ 2. Compter les votes pour BUY │ │
│ │ 3. Compter les votes pour SELL │ │
│ │ 4. Calculer le score moyen pondéré │ │
│ │ 5. Vérifier les conditions minimales │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ SORTIE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Décision: BUY | SELL | HOLD │ │
│ │ Score: 71.7% │ │
│ │ Agents d'accord: 3/5 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
9.2 Le calcul du score
┌─────────────────────────────────────────────────────────────────────────────┐
│ CALCUL DU SCORE DE CONSENSUS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ÉTAPE 1 : Identifier les votes pour BUY │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ RSI: BUY, 70% × 1.0 = 0.70 │ │
│ │ MACD: BUY, 85% × 1.0 = 0.85 │ │
│ │ Volume: BUY, 60% × 1.0 = 0.60 │ │
│ │ │ │
│ │ Total: 3 agents pour BUY │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ÉTAPE 2 : Calculer le score pondéré │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Score BUY = (0.70 + 0.85 + 0.60) / 3 = 0.717 = 71.7% │ │
│ │ │ │
│ │ Avec le multiplicateur V3 (1.2) : │ │
│ │ Score ajusté = 71.7% × 1.2 = 86.0% │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ÉTAPE 3 : Vérifier les conditions │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Condition 1: min_agents_agree = 2 │ │
│ │ → 3 agents pour BUY ≥ 2 ✅ │ │
│ │ │ │
│ │ Condition 2: min_buy_score = 0.5 (50%) │ │
│ │ → 71.7% ≥ 50% ✅ │ │
│ │ │ │
│ │ Condition 3: Pas de VETO actif │ │
│ │ → RSI = 55 (zone neutre) ✅ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ DÉCISION FINALE : BUY APPROUVÉ ✅ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
9.3 Paramètres configurables du consensus
| Paramètre | Valeur par défaut | Description | Impact |
|---|---|---|---|
min_buy_score |
0.5 (50%) | Score minimum pour un BUY | Plus élevé = moins de trades |
min_sell_score |
0.5 (50%) | Score minimum pour un SELL | Plus élevé = moins de trades |
min_agents_agree |
2 | Nombre minimum d’agents d’accord | Plus élevé = plus sélectif |
volume_required |
false | Exiger confirmation du volume | true = plus conservateur |
multiplicateur |
1.2 | Boost du score (config avancée) | > 1 = plus de trades |
9.4 Impact des paramètres
┌─────────────────────────────────────────────────────────────────────────────┐
│ IMPACT DES PARAMÈTRES DE CONSENSUS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ min_buy_score / min_sell_score : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 0.3 (30%) = Très agressif │ │
│ │ • Beaucoup de trades │ │
│ │ • Plus de risques de faux signaux │ │
│ │ │ │
│ │ 0.5 (50%) = Modéré (RECOMMANDÉ) │ │
│ │ • Équilibre entre opportunités et sécurité │ │
│ │ │ │
│ │ 0.7 (70%) = Conservateur │ │
│ │ • Moins de trades │ │
│ │ • Signaux plus fiables │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ min_agents_agree : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1 = Un seul agent suffit (TRÈS risqué) │ │
│ │ 2 = Deux agents minimum (RECOMMANDÉ) │ │
│ │ 3 = Trois agents minimum (Conservateur) │ │
│ │ 4 = Quatre agents minimum (Très conservateur) │ │
│ │ 5 = Unanimité requise (Très rare) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
10. Agent de Risque – Protection du Capital
10.1 Rôle de l’agent de risque
L’agent de risque est le gardien de votre capital. Il calcule combien investir sur chaque trade et définit les niveaux de protection.
┌─────────────────────────────────────────────────────────────────────────────┐
│ RÔLE DE L'AGENT DE RISQUE │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ RESPONSABILITÉS : │
│ │
│ 1. CALCUL DE LA TAILLE DE POSITION │
│ "Combien investir sur ce trade ?" │
│ │
│ 2. DÉFINITION DU STOP-LOSS │
│ "À quel prix couper les pertes ?" │
│ │
│ 3. DÉFINITION DU TAKE-PROFIT │
│ "À quel prix prendre les gains ?" │
│ │
│ 4. VÉRIFICATION DES LIMITES │
│ "A-t-on déjà atteint nos limites de risque ?" │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
10.2 Calcul de la taille de position
┌─────────────────────────────────────────────────────────────────────────────┐
│ CALCUL DE LA TAILLE DE POSITION │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ PRINCIPE : Ne jamais risquer plus de X% du capital sur un trade │
│ │
│ FORMULE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Montant à risquer = Capital × max_risk_per_trade │ │
│ │ │ │
│ │ Distance au SL = Prix_entrée × stop_loss_pct │ │
│ │ │ │
│ │ Montant à investir = Montant à risquer / stop_loss_pct │ │
│ │ │ │
│ │ Quantité BTC = Montant à investir / Prix_entrée │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ EXEMPLE DÉTAILLÉ : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ DONNÉES : │ │
│ │ • Capital = 10,000 USDT │ │
│ │ • max_risk_per_trade = 1% (0.01) │ │
│ │ • stop_loss_pct = 1.5% (0.015) │ │
│ │ • Prix BTC = 91,500 USDT │ │
│ │ │ │
│ │ CALCUL : │ │
│ │ • Montant à risquer = 10,000 × 0.01 = 100 USDT │ │
│ │ • Distance au SL = 91,500 × 0.015 = 1,372.50 USDT │ │
│ │ • Montant à investir = 100 / 0.015 = 6,666.67 USDT │ │
│ │ • Quantité BTC = 6,666.67 / 91,500 = 0.0728 BTC │ │
│ │ │ │
│ │ VÉRIFICATION : │ │
│ │ • Si SL touché : 0.0728 × 1,372.50 = 99.96 USDT de perte ≈ 1% │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
10.3 Les limites de sécurité
┌─────────────────────────────────────────────────────────────────────────────┐
│ LIMITES DE SÉCURITÉ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. LIMITE DE TRADES PAR JOUR (max_daily_trades) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Valeur par défaut : 10 trades/jour │ │
│ │ │ │
│ │ Pourquoi : Éviter le "sur-trading" qui épuise le capital │ │
│ │ par les frais et les erreurs │ │
│ │ │ │
│ │ Si atteint : Le bot arrête de trader jusqu'au lendemain │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ 2. PERTE JOURNALIÈRE MAXIMALE (max_daily_loss) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Valeur par défaut : 3% du capital │ │
│ │ │ │
│ │ Pourquoi : Protéger contre les journées catastrophiques │ │
│ │ │ │
│ │ Si atteint : Le bot arrête de trader jusqu'au lendemain │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ 3. DRAWDOWN MAXIMUM (max_drawdown) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Valeur par défaut : 5% du capital │ │
│ │ │ │
│ │ Drawdown = Perte depuis le plus haut niveau de capital │ │
│ │ │ │
│ │ Exemple : Capital max atteint = 10,500 USDT │ │
│ │ Capital actuel = 9,975 USDT │ │
│ │ Drawdown = (10,500 - 9,975) / 10,500 = 5% │ │
│ │ │ │
│ │ Si atteint : Le bot arrête jusqu'à intervention manuelle │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ 4. EXPOSITION MAXIMALE (max_position_pct) │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Valeur par défaut : 10% du capital par position │ │
│ │ │ │
│ │ Pourquoi : Ne pas mettre tous ses œufs dans le même panier │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
10.4 Paramètres configurables du risque
| Paramètre | Valeur par défaut | Description | Où modifier |
|---|---|---|---|
max_risk_per_trade |
0.01 (1%) | Risque maximum par trade | .env |
max_position_pct |
0.10 (10%) | Taille max d’une position | .env |
stop_loss_pct |
0.015 (1.5%) | Distance du Stop-Loss | .env |
take_profit_pct |
0.045 (4.5%) | Distance du Take-Profit | .env |
max_daily_trades |
10 | Trades max par jour | .env |
max_daily_loss |
0.03 (3%) | Perte max par jour | .env |
max_drawdown |
0.05 (5%) | Drawdown max toléré | .env |
use_trailing_stop |
true | Activer le Trailing Stop | .env |
trailing_stop_pct |
0.01 (1%) | Distance du Trailing Stop | .env |
11. Agent d’Exécution – Passage des Ordres
11.1 Rôle de l’agent d’exécution
L’agent d’exécution est le bras armé du système. Il transforme les décisions en ordres réels sur Binance.
┌─────────────────────────────────────────────────────────────────────────────┐
│ RÔLE DE L'AGENT D'EXÉCUTION │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ RESPONSABILITÉS : │
│ │
│ 1. CONNEXION À BINANCE │
│ • Authentification avec les clés API │
│ • Sélection de l'URL (demo ou production) │
│ │
│ 2. PASSAGE DE L'ORDRE PRINCIPAL │
│ • Ordre MARKET BUY ou SELL │
│ • Vérification de l'exécution │
│ │
│ 3. PLACEMENT DES ORDRES OCO (V3) │
│ • Stop-Loss automatique │
│ • Take-Profit automatique │
│ │
│ 4. GESTION DES ERREURS │
│ • Retry en cas d'échec │
│ • Logging détaillé │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
11.2 Types d’ordres utilisés
| Type d’ordre | Usage | Exécution |
|---|---|---|
| MARKET | Ordre principal | Immédiate au meilleur prix |
| LIMIT_MAKER | Take-Profit (OCO) | Quand le prix atteint le niveau |
| STOP_LOSS_LIMIT | Stop-Loss (OCO) | Quand le prix descend au trigger |
11.3 Sélection automatique de l’URL (V3)
# L'agent sélectionne automatiquement la bonne URL
if settings.binance.testnet:
if settings.market_type.value == "futures":
url = "https://demo-fapi.binance.com" # Futures Demo
else:
url = "https://demo-api.binance.com" # Spot Demo
else:
if settings.market_type.value == "futures":
url = "https://fapi.binance.com" # Futures Production
else:
url = "https://api.binance.com" # Spot Production
PARTIE 4 : ORDRES OCO
12. Comprendre les Ordres OCO
12.1 Qu’est-ce qu’un ordre OCO ?
OCO signifie « One-Cancels-Other » (L’un annule l’autre). C’est un type d’ordre avancé qui combine deux ordres en un seul :
- Un ordre Take-Profit (pour prendre les gains)
- Un ordre Stop-Loss (pour limiter les pertes)
Quand l’un des deux est exécuté, l’autre est automatiquement annulé.
┌─────────────────────────────────────────────────────────────────────────────┐
│ ORDRE OCO VISUALISÉ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Vous achetez du BTC à 91,500 USDT │
│ │
│ L'ordre OCO place automatiquement : │
│ │
│ Prix │
│ ▲ │
│ │ │
│ │ 95,618 ═══════════ TAKE-PROFIT ═══════════ (+4.5%) │
│ │ Type: LIMIT_MAKER │
│ │ "Si le prix MONTE ici, VENDRE" │
│ │ │
│ │ │
│ │ │
│ │ 91,500 ─────────── PRIX D'ENTRÉE ───────── │
│ │ Votre achat │
│ │ │
│ │ │
│ │ │
│ │ 90,128 ═══════════ STOP-LOSS ═════════════ (-1.5%) │
│ │ Type: STOP_LOSS_LIMIT │
│ │ "Si le prix DESCEND ici, VENDRE" │
│ │ │
│ ▼ │
│ │
│ ═══════════════════════════════════════════════════════════════════════ │
│ │
│ SCÉNARIO A : Le prix monte à 95,618 │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 1. Le Take-Profit est EXÉCUTÉ │ │
│ │ 2. Vous vendez à 95,618 USDT │ │
│ │ 3. Le Stop-Loss est AUTOMATIQUEMENT ANNULÉ │ │
│ │ 4. Gain : +4,118 USDT (+4.5%) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ SCÉNARIO B : Le prix descend à 90,128 │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ 1. Le Stop-Loss est DÉCLENCHÉ │ │
│ │ 2. Vous vendez à ~90,038 USDT (stop_limit_price) │ │
│ │ 3. Le Take-Profit est AUTOMATIQUEMENT ANNULÉ │ │
│ │ 4. Perte : -1,462 USDT (-1.5%) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
12.2 Pourquoi utiliser les ordres OCO ?
┌─────────────────────────────────────────────────────────────────────────────┐
│ AVANTAGES DES ORDRES OCO │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ✅ PROTECTION AUTOMATIQUE 24/7 │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ • Vous dormez ? Le Stop-Loss vous protège │ │
│ │ • Vous êtes occupé ? Le Take-Profit prend vos gains │ │
│ │ • Pas besoin de surveiller constamment │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ✅ DISCIPLINE AUTOMATIQUE │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ • Pas de décision émotionnelle │ │
│ │ • Le plan est exécuté tel que prévu │ │
│ │ • Pas de "je vais attendre encore un peu..." │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ✅ VISIBILITÉ SUR BINANCE │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ • Les ordres apparaissent dans "Open Orders" │ │
│ │ • Vous pouvez les voir sur demo.binance.com │ │
│ │ • Vous pouvez les annuler manuellement si besoin │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ✅ ATOMICITÉ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ • Les deux ordres sont liés │ │
│ │ • Impossible que les deux s'exécutent │ │
│ │ • Pas de risque de double exécution │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
12.3 Structure technique d’un ordre OCO
┌─────────────────────────────────────────────────────────────────────────────┐
│ STRUCTURE D'UN ORDRE OCO │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ REQUÊTE À L'API BINANCE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ POST /api/v3/order/oco │ │
│ │ │ │
│ │ { │ │
│ │ "symbol": "BTCUSDT", │ │
│ │ "side": "SELL", // Côté de l'ordre (SELL pour clôture │ │
│ │ "quantity": 0.00312, // Quantité à vendre │ │
│ │ "price": 95618.00, // Prix du Take-Profit │ │
│ │ "stopPrice": 90128.00, // Trigger du Stop-Loss │ │
│ │ "stopLimitPrice": 90038.00,// Prix limite du Stop-Loss │ │
│ │ "stopLimitTimeInForce": "GTC" // Good Till Cancelled │ │
│ │ } │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ RÉPONSE DE BINANCE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ { │ │
│ │ "orderListId": 954660, // ID de la liste OCO │ │
│ │ "listStatusType": "EXEC_STARTED", │ │
│ │ "orderReports": [ │ │
│ │ { │ │
│ │ "orderId": 4494456153, // ID du Stop-Loss │ │
│ │ "type": "STOP_LOSS_LIMIT", │ │
│ │ "price": "90038.00", │ │
│ │ "stopPrice": "90128.00" │ │
│ │ }, │ │
│ │ { │ │
│ │ "orderId": 4494456154, // ID du Take-Profit │ │
│ │ "type": "LIMIT_MAKER", │ │
│ │ "price": "95618.00" │ │
│ │ } │ │
│ │ ] │ │
│ │ } │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
12.4 Limites des ordres OCO
┌─────────────────────────────────────────────────────────────────────────────┐
│ LIMITES DES ORDRES OCO │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ LIMITE PRINCIPALE : MAX_NUM_ALGO_ORDERS = 5 │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Sur demo.binance.com, vous pouvez avoir maximum 5 ordres OCO │ │
│ │ simultanés par symbole (BTCUSDT). │ │
│ │ │ │
│ │ Chaque OCO = 2 ordres (SL + TP) mais compte comme 1 unité │ │
│ │ │ │
│ │ Si vous dépassez : │ │
│ │ Erreur : {"code":-2010,"msg":"Filter failure: MAX_NUM_ALGO_ORDERS"} │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ SOLUTIONS SI LIMITE ATTEINTE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Option 1 : Attendre que les ordres existants s'exécutent │ │
│ │ Option 2 : Annuler manuellement les anciens ordres │ │
│ │ Option 3 : Annuler tous les ordres via la commande : │ │
│ │ │ │
│ │ python -c " │ │
│ │ import requests, hmac, hashlib, time, os │ │
│ │ from dotenv import load_dotenv │ │
│ │ load_dotenv() │ │
│ │ # ... (voir section commandes) │ │
│ │ " │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
13. Stop-Loss Expliqué en Détail
13.1 Qu’est-ce qu’un Stop-Loss ?
Le Stop-Loss (SL) est un ordre de vente automatique qui se déclenche quand le prix atteint un niveau prédéfini. Son but est de limiter les pertes sur un trade perdant.
┌─────────────────────────────────────────────────────────────────────────────┐
│ LE STOP-LOSS EXPLIQUÉ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ANALOGIE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Imaginez que vous êtes dans un casino. │ │
│ │ Vous décidez : "Si je perds 100€, j'arrête." │ │
│ │ │ │
│ │ Le Stop-Loss est votre limite de perte prédéfinie. │ │
│ │ Il vous empêche de perdre plus que prévu. │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ EN TRADING : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Vous achetez BTC à 91,500 USDT │ │
│ │ Stop-Loss à -1.5% = 90,128 USDT │ │
│ │ │ │
│ │ Si le prix descend à 90,128 : │ │
│ │ → Le Stop-Loss se déclenche │ │
│ │ → Votre BTC est vendu automatiquement │ │
│ │ → Perte limitée à 1.5% │ │
│ │ │ │
│ │ Sans Stop-Loss : │ │
│ │ → Le prix pourrait descendre à 80,000... 70,000... 60,000... │ │
│ │ → Perte potentiellement énorme │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
13.2 Comment fonctionne le Stop-Loss dans l’OCO ?
┌─────────────────────────────────────────────────────────────────────────────┐
│ FONCTIONNEMENT DU STOP-LOSS (STOP_LOSS_LIMIT) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ DEUX PRIX IMPORTANTS : │
│ │
│ 1. stopPrice (Trigger) = Prix qui DÉCLENCHE le Stop-Loss │
│ Valeur : Prix d'entrée × (1 - stop_loss_pct) │
│ Exemple : 91,500 × 0.985 = 90,128 USDT │
│ │
│ 2. stopLimitPrice = Prix LIMITE de vente │
│ Valeur : stopPrice × 0.999 (légèrement en-dessous) │
│ Exemple : 90,128 × 0.999 = 90,038 USDT │
│ │
│ POURQUOI DEUX PRIX ? │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Le stopPrice est le "trigger" (déclencheur). │ │
│ │ Quand le prix du marché touche 90,128 : │ │
│ │ → Un ordre LIMIT de vente est créé à 90,038 │ │
│ │ │ │
│ │ Pourquoi le stopLimitPrice est plus bas ? │ │
│ │ → Pour garantir l'exécution même si le prix bouge vite │ │
│ │ → La différence (0.1%) absorbe le slippage │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ SÉQUENCE D'EXÉCUTION : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. Prix du marché atteint 90,128 (stopPrice) │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 2. Ordre LIMIT de vente créé à 90,038 (stopLimitPrice) │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 3. L'ordre s'exécute au meilleur prix ≥ 90,038 │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 4. Le Take-Profit est automatiquement annulé │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
13.3 Choisir le bon pourcentage de Stop-Loss
┌─────────────────────────────────────────────────────────────────────────────┐
│ CHOISIR SON STOP-LOSS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ STOP-LOSS SERRÉ (0.5% - 1%) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ✅ Pertes minimales par trade │ │
│ │ ❌ Beaucoup de déclenchements "pour rien" (bruit du marché) │ │
│ │ ❌ Frustration de voir le prix remonter après le SL │ │
│ │ │ │
│ │ Adapté pour : Scalping, marchés très stables │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ STOP-LOSS MODÉRÉ (1.5% - 2%) - RECOMMANDÉ : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ✅ Bon équilibre protection/flexibilité │ │
│ │ ✅ Laisse "respirer" le trade │ │
│ │ ✅ Ratio Risk/Reward favorable avec TP à 4.5% │ │
│ │ │ │
│ │ Valeur par défaut : 1.5% (stop_loss_pct = 0.015) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ STOP-LOSS LARGE (3% - 5%) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ✅ Moins de déclenchements intempestifs │ │
│ │ ❌ Pertes importantes si déclenché │ │
│ │ ❌ Nécessite un Take-Profit très élevé pour être rentable │ │
│ │ │ │
│ │ Adapté pour : Trading long terme, haute conviction │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ TABLEAU COMPARATIF : │
│ ┌───────────────┬────────────┬───────────────┬───────────────────────┐ │
│ │ Stop-Loss │ Pour 1000€ │ Déclenchements│ Ratio R/R avec TP 4.5%│ │
│ ├───────────────┼────────────┼───────────────┼───────────────────────┤ │
│ │ 0.5% │ -5€ │ Très fréquent │ 1:9 │ │
│ │ 1.0% │ -10€ │ Fréquent │ 1:4.5 │ │
│ │ 1.5% (défaut) │ -15€ │ Modéré │ 1:3 │ │
│ │ 2.0% │ -20€ │ Rare │ 1:2.25 │ │
│ │ 3.0% │ -30€ │ Très rare │ 1:1.5 │ │
│ └───────────────┴────────────┴───────────────┴───────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
14. Take-Profit Expliqué en Détail
14.1 Qu’est-ce qu’un Take-Profit ?
Le Take-Profit (TP) est un ordre de vente automatique qui se déclenche quand le prix atteint un niveau de profit prédéfini. Son but est de sécuriser les gains avant un éventuel retournement.
┌─────────────────────────────────────────────────────────────────────────────┐
│ LE TAKE-PROFIT EXPLIQUÉ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ANALOGIE : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Imaginez que vous êtes au casino et vous gagnez. │ │
│ │ Vous décidez : "Si j'atteins +500€, je m'arrête et je pars." │ │
│ │ │ │
│ │ Le Take-Profit est votre objectif de gain. │ │
│ │ Il vous permet de "verrouiller" vos profits. │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ EN TRADING : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Vous achetez BTC à 91,500 USDT │ │
│ │ Take-Profit à +4.5% = 95,618 USDT │ │
│ │ │ │
│ │ Si le prix monte à 95,618 : │ │
│ │ → Le Take-Profit s'exécute │ │
│ │ → Votre BTC est vendu automatiquement │ │
│ │ → Gain de +4.5% sécurisé ! │ │
│ │ │ │
│ │ Sans Take-Profit : │ │
│ │ → Le prix pourrait redescendre à 91,500... 90,000... │ │
│ │ → Vous auriez pu gagner mais vous avez perdu l'opportunité │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
14.2 Comment fonctionne le Take-Profit dans l’OCO ?
┌─────────────────────────────────────────────────────────────────────────────┐
│ FONCTIONNEMENT DU TAKE-PROFIT (LIMIT_MAKER) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ TYPE D'ORDRE : LIMIT_MAKER │
│ │
│ Qu'est-ce qu'un LIMIT_MAKER ? │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ • C'est un ordre LIMIT qui AJOUTE de la liquidité au marché │ │
│ │ • Il ne peut PAS s'exécuter immédiatement │ │
│ │ • Il reste dans le carnet d'ordres jusqu'à être touché │ │
│ │ │ │
│ │ Pourquoi "MAKER" ? │ │
│ │ • Vous "faites" le marché en ajoutant un ordre │ │
│ │ • Frais de trading souvent réduits pour les makers │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ CALCUL DU PRIX : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Take-Profit = Prix d'entrée × (1 + take_profit_pct) │ │
│ │ │ │
│ │ Exemple : 91,500 × 1.045 = 95,617.50 USDT │ │
│ │ Arrondi à : 95,618 USDT │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ SÉQUENCE D'EXÉCUTION : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. Ordre LIMIT_MAKER placé à 95,618 USDT │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 2. L'ordre attend dans le carnet d'ordres... │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 3. Le prix du marché monte et atteint 95,618 │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 4. Un acheteur "prend" votre ordre (il achète votre BTC) │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 5. Votre BTC est vendu à 95,618 USDT │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 6. Le Stop-Loss est automatiquement annulé │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
14.3 Choisir le bon pourcentage de Take-Profit
┌─────────────────────────────────────────────────────────────────────────────┐
│ CHOISIR SON TAKE-PROFIT │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ TAKE-PROFIT SERRÉ (1% - 2%) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ✅ Atteint fréquemment │ │
│ │ ❌ Gains limités par trade │ │
│ │ ❌ Ratio Risk/Reward défavorable avec SL à 1.5% │ │
│ │ │ │
│ │ Adapté pour : Scalping, marchés latéraux │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ TAKE-PROFIT MODÉRÉ (3% - 5%) - RECOMMANDÉ : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ✅ Bon équilibre gain/probabilité │ │
│ │ ✅ Ratio Risk/Reward favorable (1:3 avec SL 1.5%) │ │
│ │ ✅ Capte les mouvements de tendance │ │
│ │ │ │
│ │ Valeur par défaut : 4.5% (take_profit_pct = 0.045) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ TAKE-PROFIT LARGE (8% - 15%) : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ✅ Gains importants quand atteint │ │
│ │ ❌ Rarement atteint │ │
│ │ ❌ Beaucoup de retournements avant d'arriver │ │
│ │ │ │
│ │ Adapté pour : Trading de tendance, haute conviction │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ TABLEAU COMPARATIF : │
│ ┌───────────────┬────────────┬───────────────┬───────────────────────┐ │
│ │ Take-Profit │ Pour 1000€ │ Probabilité │ Ratio R/R avec SL 1.5%│ │
│ ├───────────────┼────────────┼───────────────┼───────────────────────┤ │
│ │ 2.0% │ +20€ │ Très haute │ 1:1.33 │ │
│ │ 3.0% │ +30€ │ Haute │ 1:2 │ │
│ │ 4.5% (défaut) │ +45€ │ Moyenne │ 1:3 │ │
│ │ 6.0% │ +60€ │ Basse │ 1:4 │ │
│ │ 10.0% │ +100€ │ Très basse │ 1:6.67 │ │
│ └───────────────┴────────────┴───────────────┴───────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
14.4 Le Ratio Risk/Reward
┌─────────────────────────────────────────────────────────────────────────────┐
│ RATIO RISK/REWARD (R/R) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ DÉFINITION : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Gain potentiel (Take-Profit) │ │
│ │ Ratio R/R = ───────────────────────────────────── │ │
│ │ Perte potentielle (Stop-Loss) │ │
│ │ │ │
│ │ Exemple SkullTrading : │ │
│ │ Ratio R/R = 4.5% / 1.5% = 3:1 │ │
│ │ │ │
│ │ Pour chaque 1€ risqué, on vise 3€ de gain │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ POURQUOI C'EST IMPORTANT : │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Avec un ratio 3:1, vous êtes rentable même avec 30% de réussite │ │
│ │ │ │
│ │ 100 trades avec 30% de réussite : │ │
│ │ • 70 perdants × 1€ = -70€ │ │
│ │ • 30 gagnants × 3€ = +90€ │ │
│ │ • Résultat net : +20€ ✅ │ │
│ │ │ │
│ │ ══► Le ratio R/R compense un faible taux de réussite │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ RATIOS RECOMMANDÉS : │
│ ┌───────────────┬───────────────────────────────────────────────────────┐│
│ │ Ratio R/R │ Évaluation ││
│ ├───────────────┼───────────────────────────────────────────────────────┤│
│ │ < 1:1 │ ❌ Défavorable (vous risquez plus que vous gagnez) ││
│ │ 1:1 │ ⚠️ Neutre (nécessite 50%+ de réussite) ││
│ │ 2:1 │ ✅ Bon (rentable avec 35% de réussite) ││
│ │ 3:1 (défaut) │ ✅ Excellent (rentable avec 30% de réussite) ││
│ │ > 4:1 │ ✅ Très agressif (mais TP rarement atteint) ││
│ └───────────────┴───────────────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────────────────────┘
PARTIE 5 : CONFIGURATION COMPLÈTE
15. Tous les Paramètres Modifiables
15.1 Fichier .env – Toutes les variables
Le fichier .env contient toutes les configurations de SkullTrading. Voici la liste complète avec explications :
┌─────────────────────────────────────────────────────────────────────────────┐
│ FICHIER .ENV COMPLET │
└─────────────────────────────────────────────────────────────────────────────┘
SECTION 1 : BINANCE API
# ═══════════════════════════════════════════════════════════════════════════
# BINANCE API - CLÉS D'ACCÈS
# ═══════════════════════════════════════════════════════════════════════════
# Clés pour la PRODUCTION (argent réel)
# Créez-les sur : https://www.binance.com/ → API Management
BINANCE_API_KEY=votre_cle_production
BINANCE_API_SECRET=votre_secret_production
# Clés pour le DEMO (argent fictif)
# Créez-les sur : https://demo.binance.com/ → API Management
BINANCE_TESTNET_API_KEY=votre_cle_demo
BINANCE_TESTNET_API_SECRET=votre_secret_demo
# Mode Testnet : true = demo.binance.com, false = production
# IMPORTANT : Commencez TOUJOURS par true
BINANCE_TESTNET=true
| Variable | Valeurs possibles | Description |
|---|---|---|
BINANCE_API_KEY |
Chaîne | Clé API production |
BINANCE_API_SECRET |
Chaîne | Secret API production |
BINANCE_TESTNET_API_KEY |
Chaîne | Clé API demo |
BINANCE_TESTNET_API_SECRET |
Chaîne | Secret API demo |
BINANCE_TESTNET |
true / false |
Active le mode demo |
SECTION 2 : MODE DE TRADING
# ═══════════════════════════════════════════════════════════════════════════
# MODE DE TRADING
# ═══════════════════════════════════════════════════════════════════════════
# Paire de trading (ne changez pas sauf si vous savez ce que vous faites)
TRADING_PAIR=BTCUSDT
# Mode de trading :
# - paper = Simulation (aucun ordre réel)
# - live = Ordres réels
TRADING_MODE=live
# Type de marché :
# - spot = Trading au comptant (recommandé)
# - futures = Trading avec levier (non activé en V3)
MARKET_TYPE=spot
| Variable | Valeurs possibles | Description |
|---|---|---|
TRADING_PAIR |
BTCUSDT |
Paire de trading |
TRADING_MODE |
paper / live |
Mode simulation ou réel |
MARKET_TYPE |
spot / futures |
Type de marché |
SECTION 3 : INTERVALLES DE TEMPS
# ═══════════════════════════════════════════════════════════════════════════
# INTERVALLES DE TEMPS
# ═══════════════════════════════════════════════════════════════════════════
# Intervalle entre chaque cycle d'analyse (en secondes)
# 60 = le bot analyse toutes les 60 secondes
CYCLE_INTERVAL=60
# Timeframe principal pour l'analyse technique
# Options : 1m, 3m, 5m, 15m, 30m, 1h, 4h, 1d
# 15m = bougies de 15 minutes (recommandé)
PRIMARY_TIMEFRAME=15m
| Variable | Valeurs possibles | Description |
|---|---|---|
CYCLE_INTERVAL |
30, 60, 120, 300… | Secondes entre cycles |
PRIMARY_TIMEFRAME |
1m, 5m, 15m, 1h… |
Période des bougies |
Impact du CYCLE_INTERVAL :
| Valeur | Trades potentiels/jour | CPU | Recommandation |
|---|---|---|---|
| 30s | Très élevé | Élevé | Scalping agressif |
| 60s | Élevé | Moyen | Recommandé |
| 120s | Modéré | Faible | Conservateur |
| 300s | Faible | Très faible | Long terme |
Impact du PRIMARY_TIMEFRAME :
| Valeur | Type de trading | Bruit | Signaux/jour |
|---|---|---|---|
| 1m | Scalping | Très élevé | Beaucoup |
| 5m | Day trading court | Élevé | Beaucoup |
| 15m | Day trading | Moyen | Modéré |
| 1h | Swing trading | Faible | Peu |
| 4h | Position trading | Très faible | Très peu |
SECTION 4 : PARAMÈTRES DE CONSENSUS
# ═══════════════════════════════════════════════════════════════════════════
# PARAMÈTRES DE CONSENSUS
# ═══════════════════════════════════════════════════════════════════════════
# Score MINIMUM pour déclencher un ACHAT
# 0.5 = 50% de confiance requise
# Plus élevé = moins de trades mais plus fiables
MIN_BUY_SCORE=0.5
# Score MINIMUM pour déclencher une VENTE
# 0.5 = 50% de confiance requise
MIN_SELL_SCORE=0.5
# Nombre MINIMUM d'agents qui doivent être d'accord
# 2 = au moins 2 agents sur 5 doivent voter la même direction
MIN_AGENTS_AGREE=2
# Exiger une confirmation du volume ?
# false = le volume n'est pas obligatoire
# true = le volume doit confirmer le signal
VOLUME_REQUIRED=false
| Variable | Valeurs | Description | Impact |
|---|---|---|---|
MIN_BUY_SCORE |
0.3 à 0.8 | Seuil pour BUY | ↑ = moins de trades |
MIN_SELL_SCORE |
0.3 à 0.8 | Seuil pour SELL | ↑ = moins de trades |
MIN_AGENTS_AGREE |
1 à 5 | Agents minimum | ↑ = plus sélectif |
VOLUME_REQUIRED |
true/false |
Exiger volume | true = plus conservateur |
Tableau des configurations de consensus :
| Style | MIN_BUY_SCORE | MIN_AGENTS_AGREE | Trades/semaine |
|---|---|---|---|
| Très agressif | 0.3 | 1 | ~50+ |
| Agressif | 0.4 | 2 | ~30 |
| Modéré (défaut) | 0.5 | 2 | ~15 |
| Conservateur | 0.6 | 3 | ~8 |
| Très conservateur | 0.7 | 4 | ~3 |
SECTION 5 : GESTION DES RISQUES
# ═══════════════════════════════════════════════════════════════════════════
# GESTION DES RISQUES
# ═══════════════════════════════════════════════════════════════════════════
# Risque MAXIMUM par trade (en % du capital)
# 0.01 = 1% du capital risqué par trade
# Si capital = 10,000 USDT et SL touché = perte max de 100 USDT
MAX_RISK_PER_TRADE=0.01
# Taille MAXIMUM d'une position (en % du capital)
# 0.10 = maximum 10% du capital investi par trade
MAX_POSITION_PCT=0.10
# Distance du STOP-LOSS (en % du prix d'entrée)
# 0.015 = 1.5% en-dessous du prix d'achat
STOP_LOSS_PCT=0.015
# Distance du TAKE-PROFIT (en % du prix d'entrée)
# 0.045 = 4.5% au-dessus du prix d'achat
TAKE_PROFIT_PCT=0.045
# Activer le Trailing Stop ?
# true = le SL suit le prix à la hausse
USE_TRAILING_STOP=true
# Distance du Trailing Stop (en % du plus haut)
# 0.01 = 1% en-dessous du plus haut atteint
TRAILING_STOP_PCT=0.01
# Nombre MAXIMUM de trades par jour
# Protection contre le sur-trading
MAX_DAILY_TRADES=10
# Perte journalière MAXIMUM (en % du capital)
# Si atteint = stop trading jusqu'au lendemain
MAX_DAILY_LOSS=0.03
# Drawdown MAXIMUM toléré (en % depuis le plus haut)
# Si atteint = stop trading jusqu'à intervention manuelle
MAX_DRAWDOWN=0.05
| Variable | Valeurs | Description | Impact |
|---|---|---|---|
MAX_RISK_PER_TRADE |
0.005 à 0.03 | Risque par trade | ↑ = positions plus grandes |
MAX_POSITION_PCT |
0.05 à 0.30 | Taille max position | ↑ = plus exposé |
STOP_LOSS_PCT |
0.005 à 0.03 | Distance SL | ↑ = moins de SL touchés |
TAKE_PROFIT_PCT |
0.02 à 0.10 | Distance TP | ↑ = gains plus importants mais rares |
USE_TRAILING_STOP |
true/false |
Trailing actif | true = protège gains |
TRAILING_STOP_PCT |
0.005 à 0.02 | Distance trailing | ↑ = plus de marge |
MAX_DAILY_TRADES |
5 à 30 | Limite journalière | ↑ = plus de trades |
MAX_DAILY_LOSS |
0.02 à 0.10 | Perte max/jour | ↓ = plus protégé |
MAX_DRAWDOWN |
0.03 à 0.15 | Drawdown max | ↓ = arrêt plus rapide |
Combinaisons Stop-Loss / Take-Profit :
| SL | TP | Ratio R/R | Style | Win Rate requis |
|---|---|---|---|---|
| 1% | 2% | 1:2 | Conservateur | 35% |
| 1% | 3% | 1:3 | Modéré | 28% |
| 1.5% | 4.5% | 1:3 | Défaut | 28% |
| 2% | 6% | 1:3 | Agressif | 28% |
| 2% | 8% | 1:4 | Très agressif | 22% |
SECTION 6 : NOTIFICATIONS
# ═══════════════════════════════════════════════════════════════════════════
# NOTIFICATIONS TELEGRAM
# ═══════════════════════════════════════════════════════════════════════════
# Activer Telegram ?
TELEGRAM_ENABLED=true
# Token du bot (obtenu via @BotFather)
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz
# Votre Chat ID (obtenu via @userinfobot)
TELEGRAM_CHAT_ID=987654321
# ═══════════════════════════════════════════════════════════════════════════
# TYPES DE NOTIFICATIONS
# ═══════════════════════════════════════════════════════════════════════════
# Notifier chaque trade exécuté ?
NOTIFY_ON_TRADE=true
# Notifier les signaux forts (sans trade) ?
NOTIFY_ON_SIGNAL=false
# Notifier les erreurs critiques ?
NOTIFY_ON_ERROR=true
# Envoyer un résumé quotidien ?
NOTIFY_DAILY_SUMMARY=true
# ═══════════════════════════════════════════════════════════════════════════
# DISCORD (optionnel)
# ═══════════════════════════════════════════════════════════════════════════
DISCORD_ENABLED=false
DISCORD_WEBHOOK=https://discord.com/api/webhooks/xxx/yyy
| Variable | Valeurs | Description |
|---|---|---|
TELEGRAM_ENABLED |
true/false |
Activer Telegram |
TELEGRAM_BOT_TOKEN |
Chaîne | Token du bot |
TELEGRAM_CHAT_ID |
Nombre | Votre Chat ID |
NOTIFY_ON_TRADE |
true/false |
Notifier les trades |
NOTIFY_ON_SIGNAL |
true/false |
Notifier les signaux |
NOTIFY_ON_ERROR |
true/false |
Notifier les erreurs |
SECTION 7 : PARAMÈTRES AVANCÉS
# ═══════════════════════════════════════════════════════════════════════════
# PARAMÈTRES AVANCÉS (V3)
# ═══════════════════════════════════════════════════════════════════════════
# Utiliser les ordres OCO automatiques ?
# true = Stop-Loss et Take-Profit automatiques (recommandé)
USE_OCO_ORDERS=true
# Niveau de log
# DEBUG = très détaillé, INFO = normal, WARNING = alertes seulement
LOG_LEVEL=INFO
# ═══════════════════════════════════════════════════════════════════════════
# SENTIMENT IA (optionnel)
# ═══════════════════════════════════════════════════════════════════════════
SENTIMENT_ENABLED=false
ANTHROPIC_API_KEY=sk-ant-xxxxx
SENTIMENT_LLM=anthropic
SENTIMENT_INTERVAL=60
# ═══════════════════════════════════════════════════════════════════════════
# FUTURES (non activé en V3)
# ═══════════════════════════════════════════════════════════════════════════
FUTURES_ENABLED=false
LEVERAGE=1
16. Profils de Configuration
16.1 Profil PRUDENT (Débutant)
Pour ceux qui débutent ou veulent minimiser les risques.
# PROFIL PRUDENT
MIN_BUY_SCORE=0.6
MIN_SELL_SCORE=0.6
MIN_AGENTS_AGREE=3
VOLUME_REQUIRED=true
MAX_RISK_PER_TRADE=0.005
MAX_POSITION_PCT=0.05
STOP_LOSS_PCT=0.01
TAKE_PROFIT_PCT=0.03
MAX_DAILY_TRADES=5
MAX_DRAWDOWN=0.03
| Caractéristique | Valeur |
|---|---|
| Trades/semaine | ~5 |
| Risque/trade | 0.5% |
| Ratio R/R | 1:3 |
| Drawdown max | 3% |
16.2 Profil MODÉRÉ (Recommandé)
Équilibre entre opportunités et sécurité.
# PROFIL MODÉRÉ (DÉFAUT)
MIN_BUY_SCORE=0.5
MIN_SELL_SCORE=0.5
MIN_AGENTS_AGREE=2
VOLUME_REQUIRED=false
MAX_RISK_PER_TRADE=0.01
MAX_POSITION_PCT=0.10
STOP_LOSS_PCT=0.015
TAKE_PROFIT_PCT=0.045
MAX_DAILY_TRADES=10
MAX_DRAWDOWN=0.05
| Caractéristique | Valeur |
|---|---|
| Trades/semaine | ~15 |
| Risque/trade | 1% |
| Ratio R/R | 1:3 |
| Drawdown max | 5% |
16.3 Profil AGRESSIF (Expérimenté)
Pour les traders expérimentés qui acceptent plus de risques.
# PROFIL AGRESSIF
MIN_BUY_SCORE=0.4
MIN_SELL_SCORE=0.4
MIN_AGENTS_AGREE=2
VOLUME_REQUIRED=false
MAX_RISK_PER_TRADE=0.02
MAX_POSITION_PCT=0.20
STOP_LOSS_PCT=0.02
TAKE_PROFIT_PCT=0.06
MAX_DAILY_TRADES=20
MAX_DRAWDOWN=0.10
| Caractéristique | Valeur |
|---|---|
| Trades/semaine | ~30 |
| Risque/trade | 2% |
| Ratio R/R | 1:3 |
| Drawdown max | 10% |
16.4 Tableau comparatif des profils
┌─────────────────────────────────────────────────────────────────────────────┐
│ COMPARAISON DES PROFILS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Paramètre │ PRUDENT │ MODÉRÉ │ AGRESSIF │
│ ───────────────────┼─────────────┼─────────────┼───────────── │
│ MIN_BUY_SCORE │ 0.6 (60%) │ 0.5 (50%) │ 0.4 (40%) │
│ MIN_AGENTS_AGREE │ 3 │ 2 │ 2 │
│ VOLUME_REQUIRED │ true │ false │ false │
│ MAX_RISK_PER_TRADE │ 0.5% │ 1% │ 2% │
│ STOP_LOSS_PCT │ 1% │ 1.5% │ 2% │
│ TAKE_PROFIT_PCT │ 3% │ 4.5% │ 6% │
│ MAX_DAILY_TRADES │ 5 │ 10 │ 20 │
│ MAX_DRAWDOWN │ 3% │ 5% │ 10% │
│ ───────────────────┼─────────────┼─────────────┼───────────── │
│ Trades/semaine │ ~5 │ ~15 │ ~30 │
│ Gain potentiel/mois│ Faible │ Modéré │ Élevé │
│ Risque │ Faible │ Modéré │ Élevé │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
17. Ajuster les Pourcentages
17.1 Comment modifier les paramètres
# 1. Arrêter le bot
sudo systemctl stop skulltrading
# 2. Modifier le fichier .env
nano ~/skulltrading/.env
# 3. Sauvegarder (Ctrl+O, Enter) et quitter (Ctrl+X)
# 4. Redémarrer le bot
sudo systemctl start skulltrading
17.2 Exemples de modifications courantes
Réduire le nombre de trades :
# Avant
MIN_BUY_SCORE=0.5
MIN_AGENTS_AGREE=2
# Après (moins de trades, plus sélectif)
MIN_BUY_SCORE=0.6
MIN_AGENTS_AGREE=3
Augmenter les gains potentiels (plus de risque) :
# Avant
STOP_LOSS_PCT=0.015
TAKE_PROFIT_PCT=0.045
# Après (gains plus importants mais SL plus souvent touché)
STOP_LOSS_PCT=0.02
TAKE_PROFIT_PCT=0.08
Réduire le risque par trade :
# Avant
MAX_RISK_PER_TRADE=0.01
# Après (positions plus petites)
MAX_RISK_PER_TRADE=0.005
17.3 Formules utiles
Calculer la taille de position :
Position = (Capital × MAX_RISK_PER_TRADE) / STOP_LOSS_PCT
Exemple :
Position = (10,000 × 0.01) / 0.015 = 6,666 USDT
Calculer le ratio Risk/Reward :
Ratio R/R = TAKE_PROFIT_PCT / STOP_LOSS_PCT
Exemple :
Ratio = 0.045 / 0.015 = 3 (soit 1:3)
Win Rate minimum pour être rentable :
Win Rate min = 1 / (1 + Ratio R/R)
Exemple avec Ratio 1:3 :
Win Rate min = 1 / (1 + 3) = 25%
PARTIE 6 : UTILISATION PRATIQUE
18. Commandes et Opérations
18.1 Démarrage et arrêt du bot
# ═══════════════════════════════════════════════════════════════════════════
# COMMANDES DE BASE
# ═══════════════════════════════════════════════════════════════════════════
# Activer l'environnement virtuel (TOUJOURS faire en premier)
cd ~/skulltrading
source venv/bin/activate
# Exécuter UN SEUL cycle (pour tester)
python main.py --once
# Lancer le bot en continu
python main.py
# Lancer avec logs détaillés (DEBUG)
python main.py --log-level DEBUG
# Arrêter le bot (si lancé en premier plan)
Ctrl + C
18.2 Gestion du service systemd
# ═══════════════════════════════════════════════════════════════════════════
# COMMANDES SYSTEMD (pour VPS)
# ═══════════════════════════════════════════════════════════════════════════
# Voir le statut du bot
sudo systemctl status skulltrading
# Démarrer le bot
sudo systemctl start skulltrading
# Arrêter le bot
sudo systemctl stop skulltrading
# Redémarrer le bot (après modification du .env)
sudo systemctl restart skulltrading
# Voir les logs en temps réel
journalctl -u skulltrading -f
# Voir les 100 dernières lignes de logs
journalctl -u skulltrading -n 100
# Activer le démarrage automatique au boot
sudo systemctl enable skulltrading
# Désactiver le démarrage automatique
sudo systemctl disable skulltrading
18.3 Forcer un trade manuellement
# ═══════════════════════════════════════════════════════════════════════════
# FORCER UN TRADE BUY (avec ordres OCO)
# ═══════════════════════════════════════════════════════════════════════════
cd ~/skulltrading
source venv/bin/activate
python -c "
from agents.execution_agent import ExecutionAgent
from agents.risk_agent import RiskAssessment, RiskDecision, PositionSizing
from utils.notifications import NotificationManager
# Initialiser les agents
exec_agent = ExecutionAgent()
notif = NotificationManager()
# Obtenir le prix actuel
current_price = exec_agent.get_current_price()
print(f'Prix actuel BTC: {current_price:.2f} USDT')
# Calculer la position (0.001 BTC)
quantity = 0.001
position = PositionSizing(
quantity=quantity,
quote_amount=current_price * quantity,
risk_amount=current_price * quantity * 0.015,
entry_price=current_price,
stop_loss_price=round(current_price * 0.985, 2),
take_profit_price=round(current_price * 1.045, 2)
)
print(f'Quantité: {position.quantity} BTC')
print(f'Stop-Loss: {position.stop_loss_price:.2f} USDT')
print(f'Take-Profit: {position.take_profit_price:.2f} USDT')
# Créer l'évaluation de risque
risk_assessment = RiskAssessment(
decision=RiskDecision.APPROVED,
position=position,
reasons=['Trade forcé manuellement']
)
# Exécuter le trade
result = exec_agent.execute_trade(risk_assessment, 'buy')
if result.success:
print('✅ Trade exécuté avec succès!')
print(f' Ordre ID: {result.order.order_id if result.order else \"N/A\"}')
# Envoyer notification
notif.notify_trade(
direction='buy',
symbol='BTCUSDT',
quantity=position.quantity,
price=current_price,
stop_loss=position.stop_loss_price,
take_profit=position.take_profit_price,
confidence=1.0
)
print('📱 Notification Telegram envoyée!')
else:
print('❌ Échec du trade')
print(f' Raison: {result.error}')
"
18.4 Voir les ordres ouverts
# ═══════════════════════════════════════════════════════════════════════════
# VOIR LES ORDRES OUVERTS SUR BINANCE
# ═══════════════════════════════════════════════════════════════════════════
cd ~/skulltrading
source venv/bin/activate
python -c "
import requests
import hmac
import hashlib
import time
import os
from urllib.parse import urlencode
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv('BINANCE_TESTNET_API_KEY')
api_secret = os.getenv('BINANCE_TESTNET_API_SECRET')
# Préparer la requête signée
timestamp = int(time.time() * 1000)
params = {'symbol': 'BTCUSDT', 'timestamp': timestamp}
query_string = urlencode(params)
signature = hmac.new(
api_secret.encode(),
query_string.encode(),
hashlib.sha256
).hexdigest()
params['signature'] = signature
# Envoyer la requête
response = requests.get(
'https://demo-api.binance.com/api/v3/openOrders',
params=params,
headers={'X-MBX-APIKEY': api_key}
)
orders = response.json()
print(f'═══════════════════════════════════════════════════════')
print(f'ORDRES OUVERTS: {len(orders)}')
print(f'═══════════════════════════════════════════════════════')
for o in orders:
print(f\"\"\"
ID: {o['orderId']}
Type: {o['type']}
Côté: {o['side']}
Quantité: {o['origQty']}
Prix: {o['price']}
Stop Price: {o.get('stopPrice', 'N/A')}
Statut: {o['status']}
───────────────────────────────────────────────────────\"\"\")
"
18.5 Annuler tous les ordres
# ═══════════════════════════════════════════════════════════════════════════
# ANNULER TOUS LES ORDRES OUVERTS
# ═══════════════════════════════════════════════════════════════════════════
cd ~/skulltrading
source venv/bin/activate
python -c "
import requests
import hmac
import hashlib
import time
import os
from urllib.parse import urlencode
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv('BINANCE_TESTNET_API_KEY')
api_secret = os.getenv('BINANCE_TESTNET_API_SECRET')
# Préparer la requête signée
timestamp = int(time.time() * 1000)
params = {'symbol': 'BTCUSDT', 'timestamp': timestamp}
query_string = urlencode(params)
signature = hmac.new(
api_secret.encode(),
query_string.encode(),
hashlib.sha256
).hexdigest()
params['signature'] = signature
# Envoyer la requête DELETE
response = requests.delete(
'https://demo-api.binance.com/api/v3/openOrders',
params=params,
headers={'X-MBX-APIKEY': api_key}
)
if response.status_code == 200:
print('✅ Tous les ordres ont été annulés!')
else:
print(f'❌ Erreur: {response.text}')
"
18.6 Voir le solde du compte
# ═══════════════════════════════════════════════════════════════════════════
# VOIR LE SOLDE DU COMPTE
# ═══════════════════════════════════════════════════════════════════════════
cd ~/skulltrading
source venv/bin/activate
python -c "
import requests
import hmac
import hashlib
import time
import os
from urllib.parse import urlencode
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv('BINANCE_TESTNET_API_KEY')
api_secret = os.getenv('BINANCE_TESTNET_API_SECRET')
timestamp = int(time.time() * 1000)
params = {'timestamp': timestamp}
query_string = urlencode(params)
signature = hmac.new(
api_secret.encode(),
query_string.encode(),
hashlib.sha256
).hexdigest()
params['signature'] = signature
response = requests.get(
'https://demo-api.binance.com/api/v3/account',
params=params,
headers={'X-MBX-APIKEY': api_key}
)
if response.status_code == 200:
account = response.json()
print('═══════════════════════════════════════════════════════')
print('SOLDE DU COMPTE')
print('═══════════════════════════════════════════════════════')
for balance in account['balances']:
free = float(balance['free'])
locked = float(balance['locked'])
if free > 0 or locked > 0:
print(f\"{balance['asset']:10} | Libre: {free:15.8f} | Bloqué: {locked:15.8f}\")
else:
print(f'❌ Erreur: {response.text}')
"
18.7 Tester la notification Telegram
# ═══════════════════════════════════════════════════════════════════════════
# TESTER LA NOTIFICATION TELEGRAM
# ═══════════════════════════════════════════════════════════════════════════
cd ~/skulltrading
source venv/bin/activate
python -c "
from dotenv import load_dotenv
load_dotenv()
from utils.notifications import NotificationManager, Notification, NotificationType
nm = NotificationManager()
# Test simple
notification = Notification(
type=NotificationType.INFO,
title='🧪 Test SkullTrading V3',
message='Si vous voyez ce message, les notifications fonctionnent!',
data={
'Version': '3.0',
'Status': 'OK'
}
)
result = nm.notify(notification)
print('✅ Notification envoyée!' if result else '❌ Échec de l\\'envoi')
"
18.8 Vérifier la configuration
# ═══════════════════════════════════════════════════════════════════════════
# VÉRIFIER TOUTE LA CONFIGURATION
# ═══════════════════════════════════════════════════════════════════════════
cd ~/skulltrading
source venv/bin/activate
python -c "
from dotenv import load_dotenv
load_dotenv()
from config.settings import settings
print('═══════════════════════════════════════════════════════════════')
print(' CONFIGURATION SKULLTRADING V3')
print('═══════════════════════════════════════════════════════════════')
print()
print('📊 TRADING')
print(f' Mode: {settings.trading_mode.value}')
print(f' Testnet: {settings.binance.testnet}')
print(f' URL: {settings.binance.active_url}')
print(f' Paire: {settings.trading_pair.symbol}')
print(f' API Key: {\"✅\" if settings.binance.active_key else \"❌\"}')
print()
print('🎯 CONSENSUS')
print(f' Min BUY score: {settings.consensus.min_buy_score} ({settings.consensus.min_buy_score*100:.0f}%)')
print(f' Min SELL score: {settings.consensus.min_sell_score} ({settings.consensus.min_sell_score*100:.0f}%)')
print(f' Min agents agree: {settings.consensus.min_agents_agree}')
print(f' Volume requis: {settings.consensus.volume_required}')
print()
print('🛡️ RISQUE')
print(f' Risque/trade: {settings.risk.max_risk_per_trade*100:.1f}%')
print(f' Position max: {settings.risk.max_position_pct*100:.0f}%')
print(f' Stop-Loss: {settings.risk.stop_loss_pct*100:.1f}%')
print(f' Take-Profit: {settings.risk.take_profit_pct*100:.1f}%')
print(f' Ratio R/R: 1:{settings.risk.take_profit_pct/settings.risk.stop_loss_pct:.1f}')
print(f' Trailing Stop: {settings.risk.use_trailing_stop}')
print(f' Max trades/jour: {settings.risk.max_daily_trades}')
print(f' Max drawdown: {settings.risk.max_drawdown*100:.0f}%')
print()
print('⚙️ EXÉCUTION')
print(f' Ordres OCO: {settings.execution.use_oco_orders}')
print()
print('📱 NOTIFICATIONS')
print(f' Telegram: {\"✅\" if settings.notifications.telegram_enabled else \"❌\"}')
print(f' Discord: {\"✅\" if settings.notifications.discord_enabled else \"❌\"}')
print()
print('═══════════════════════════════════════════════════════════════')
"
19. Surveillance et Monitoring
19.1 Fichiers de logs
# ═══════════════════════════════════════════════════════════════════════════
# FICHIERS DE LOGS
# ═══════════════════════════════════════════════════════════════════════════
# Log principal du jour
tail -100 ~/skulltrading/logs/trading_$(date +%Y%m%d).log
# Log de sortie (si lancé via systemd)
tail -f ~/skulltrading/logs/output.log
# Log des erreurs
tail -f ~/skulltrading/logs/error.log
# Historique des trades (JSON)
cat ~/skulltrading/logs/trades_history.json | python -m json.tool
# Suivre les logs en temps réel
tail -f ~/skulltrading/logs/trading_$(date +%Y%m%d).log
19.2 Dashboard Streamlit
# ═══════════════════════════════════════════════════════════════════════════
# LANCER LE DASHBOARD
# ═══════════════════════════════════════════════════════════════════════════
cd ~/skulltrading
source venv/bin/activate
# Dashboard de base
streamlit run dashboard.py --server.port 8501
# Dashboard avec sentiment IA
streamlit run dashboard_sentiment.py --server.port 8501
# Accès : http://IP_DU_VPS:8501
19.3 Voir les ordres sur Binance Demo
- Aller sur https://demo.binance.com/
- Se connecter avec votre compte Binance
- Cliquer sur Trade → Spot
- Sélectionner BTC/USDT
- Sections importantes :
- Open Orders : Ordres OCO actifs
- Order History : Historique des ordres
- Trade History : Historique des trades
- Funds : Solde du compte
19.4 Commandes de diagnostic
# ═══════════════════════════════════════════════════════════════════════════
# DIAGNOSTIC COMPLET
# ═══════════════════════════════════════════════════════════════════════════
# Vérifier que le service tourne
sudo systemctl status skulltrading
# Vérifier la connexion Binance
cd ~/skulltrading && source venv/bin/activate
python -c "
from agents.execution_agent import ExecutionAgent
agent = ExecutionAgent()
price = agent.get_current_price()
print(f'✅ Connexion OK - Prix BTC: {price:.2f} USDT')
"
# Vérifier les erreurs récentes
grep -i error ~/skulltrading/logs/trading_$(date +%Y%m%d).log | tail -20
# Vérifier l'espace disque
df -h
# Vérifier la mémoire
free -h
# Vérifier le CPU
top -bn1 | head -20
20. Dépannage
20.1 Erreurs courantes et solutions
┌─────────────────────────────────────────────────────────────────────────────┐
│ ERREURS COURANTES │
└─────────────────────────────────────────────────────────────────────────────┘
Erreur : « 401 Unauthorized » ou « Invalid API-key »
Cause : Clés API invalides ou mauvaise plateforme.
Solution :
# Vérifier les clés
cat ~/skulltrading/.env | grep BINANCE
# S'assurer que les clés viennent de demo.binance.com (pas testnet.binance.vision)
Erreur : « MAX_NUM_ALGO_ORDERS »
Cause : Trop d’ordres OCO ouverts (limite : 5).
Solution :
# Voir les ordres ouverts
# (utiliser la commande 18.4)
# Annuler tous les ordres
# (utiliser la commande 18.5)
Erreur : « Insufficient balance »
Cause : Pas assez de fonds pour le trade.
Solution :
# Vérifier le solde
# (utiliser la commande 18.6)
# Sur demo.binance.com, vous avez 100,000 USDT de test
# Si épuisé, créez un nouveau compte ou attendez le reset
Erreur : « Telegram: chat not found »
Cause : Vous n’avez jamais envoyé de message au bot.
Solution :
1. Ouvrir Telegram
2. Chercher votre bot
3. Envoyer /start
4. Réessayer
Erreur : « Module not found »
Cause : Environnement virtuel non activé ou dépendance manquante.
Solution :
cd ~/skulltrading
source venv/bin/activate
pip install -r requirements.txt
20.2 Le bot ne trade pas
Vérifications à faire :
# 1. Vérifier que le bot tourne
sudo systemctl status skulltrading
# 2. Vérifier les logs
tail -50 ~/skulltrading/logs/trading_$(date +%Y%m%d).log
# 3. Vérifier les signaux
grep -i "signal\|consensus\|decision" ~/skulltrading/logs/trading_$(date +%Y%m%d).log | tail -20
# 4. Vérifier si les conditions sont trop strictes
# Si min_buy_score est trop élevé, le bot peut ne jamais trader
20.3 Réinitialisation complète
Si rien ne fonctionne :
# 1. Arrêter le service
sudo systemctl stop skulltrading
# 2. Sauvegarder la config
cp ~/skulltrading/.env ~/skulltrading/.env.backup
# 3. Réinstaller les dépendances
cd ~/skulltrading
rm -rf venv
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install python-dotenv aiohttp
# 4. Restaurer la config
cp ~/skulltrading/.env.backup ~/skulltrading/.env
# 5. Tester
python main.py --once
# 6. Redémarrer
sudo systemctl start skulltrading
📋 Checklist de démarrage
Avant de lancer le bot, vérifiez :
- [ ] Ubuntu 22.04+ installé
- [ ] Python 3.10+ installé
- [ ] Environnement virtuel créé et activé
- [ ] Dépendances installées (
pip install -r requirements.txt) - [ ] Compte demo.binance.com créé
- [ ] Clés API demo générées et copiées
- [ ] Fichier
.envconfiguré avec les clés - [ ] Bot Telegram créé via @BotFather
- [ ] Chat ID obtenu via @userinfobot
- [ ] Paramètres Telegram dans
.env - [ ] Test de connexion Binance réussi
- [ ] Test de notification Telegram réussi
- [ ] Premier cycle (
python main.py --once) réussi - [ ] Service systemd configuré (pour VPS)
📞 En cas de problème
- Vérifiez les logs :
tail -f ~/skulltrading/logs/trading_$(date +%Y%m%d).log - Vérifiez le statut :
sudo systemctl status skulltrading - Vérifiez la configuration : Lancez la commande 18.8
- Vérifiez les ordres : Regardez sur demo.binance.com
- Testez composant par composant : Connexion Binance, notification Telegram, etc.
⚠️ Avertissement final
Le trading de cryptomonnaies comporte des risques importants de perte en capital.
- Commencez TOUJOURS sur demo.binance.com
- Ne tradez JAMAIS avec de l’argent que vous ne pouvez pas perdre
- Testez pendant plusieurs semaines avant de passer en production
- Les performances passées ne garantissent pas les performances futures
- Ce système est fourni à titre éducatif
💀 SkullTrading V3 – Mode d’Emploi Complet
Version 3.0 – 28 Novembre 2025
Conçu pour HB9HPG
