🚀 TradeCopierBot — Copie de trades rapide, propre et à l'épreuve des brokers (Local/VPS) 🔁✨
Copiez vos trades d'un compte MASTER vers un (ou plusieurs) comptes SLAVE avec un copieur léger, piloté par événements, conçu pour des conditions de trading réelles : différents brokers, différents noms de symboles, différentes règles de lots.
Parfait pour l'exécution multi-comptes, l'ajustement du risque, et la distribution de stratégies—avec des journaux de débogage détaillés pour que vous sachiez toujours ce qui se passe. 🧠📈
✅ Optimisé pour les configurations Local / VPS (même machine).
❌ Non conçu pour cTrader Cloud (les instances sont isolées, donc les signaux ne peuvent pas être partagés). ☁️🚫
Attention : si vous avez deux comptes cTrader différents, vous devez acheter deux cBots ; sinon, vous ne pourrez pas les copier. Nous sommes à votre entière disposition pour toute information.
🧠 Comment ça fonctionne (MASTER → SLAVE) 🧩
🔁 1) Transport du signal (comment les trades « voyagent »)
Ce copieur utilise cTrader LocalStorage (portée Device) comme « bus de messages » partagé.
✅ MASTER
- Écoute les événements de position : Ouverte / Modifiée / Fermée
- Crée un
TradeSignal(OPEN / MODIFY / CLOSE) - L'ajoute à une liste de signaux dans LocalStorageScope.Device
- Appelle Flush() pour que le SLAVE puisse le lire immédiatement
✅ SLAVE
- Exécute un Timer toutes les Poll Interval secondes
- Appelle Reload()
- Lit la liste des signaux
- Traite uniquement les nouveaux signaux (en utilisant
_lastSignalIndexProcessed)
🧷 2) Mappage des positions (pour que CLOSE fonctionne)
Lorsque le SLAVE ouvre un trade, il stocke :
🧩 MasterPositionId → SlavePositionId
Ce mappage est aussi sauvegardé dans LocalStorage, il survit donc aux redémarrages :
- ✅ CLOSE fonctionne toujours après redémarrage
- ✅ MODIFY trouve toujours la bonne position
🧭 3) Traduction des symboles (symbole MASTER → symbole SLAVE)
🗺️ Carte des symboles (MASTER=SLAVE;...)
Utilisée lorsque les noms des symboles diffèrent entre brokers/comptes.
Format :
MASTER=SLAVE;MASTER2=SLAVE2;...
Exemple (votre cas) :
- MASTER ouvre
USTEC - SLAVE doit trader
US100
➡️ USTEC=US100
✅ Côté gauche = symbole venant du MASTER
✅ Côté droit = symbole sur le broker SLAVE
📏 4) Logique de volume (la partie clé) 🔥
✅ Fonctionne en lots/quantité (décimales supportées)
Pour gérer les décimales (0.10, 0.01, etc.), le SLAVE :
- Calcule les lots désirés
- Applique le multiplicateur / min / pas
- Convertit les lots → volume en utilisant
QuantityToVolumeInUnits(lots) - Envoie l'ordre en utilisant une surcharge acceptant un volume double ✅
C'est ce qui le rend robuste même lorsque les brokers imposent des règles de précision différentes pour les lots.
⚙️ Paramètres expliqués (avec icônes)
🧩 Noyau
- 🧭 Mode
-
Master= publie les signauxSlave= lit les signaux et copie les trades
- 🧷 Id du groupe de copie
-
- Canal de communication. MASTER et SLAVE doivent correspondre (ex.
DEFAULT)
- Canal de communication. MASTER et SLAVE doivent correspondre (ex.
- ⏱️ Intervalle de sondage (sec)
-
- Le SLAVE vérifie les nouveaux signaux toutes les N secondes
- 🐞 Mode débogage
-
- Affiche des journaux détaillés (recommandé lors de la configuration)
🗺️ Traduction des symboles
- 🧾 Carte des symboles (MASTER=SLAVE;...)
-
- Exemple :
USTEC=US100;XAUUSD=GOLD;NAS100=USTEC
- Exemple :
🎚️ Échelle de volume (TRÈS IMPORTANT) ✅
🔢 Multiplicateur global
- ➗ Multiplicateur de volume
-
- Ajuste tous les lots copiés :
desiredLots = masterLots * VolumeMultiplier
🎛️ Multiplicateur par symbole (votre outil principal)
- 🧷 Carte des multiplicateurs de volume (SYM=mult;...)
-
- Remplace le multiplicateur par symbole (symbole côté SLAVE)
- Exemple :
-
US100= 0. 10- Le format italien est aussi OK :
US100=0,10
✅ C'est ainsi que vous obtenez : 1. 00 sur MASTER → 0. 10 sur SLAVE
🧱 Contraintes de lots du broker (min et pas)
- 🧱 Quantité min par défaut (0=off)
-
- Lots minimum globaux si activé
- 🧱 Carte des quantités min (SYM=val;...)
-
- Lots minimum par symbole
- Exemple :
US100=0. 10
- 🪜 Pas de quantité par défaut (0=off)
-
- Pas global si activé
- 🪜 Carte des pas de quantité (SYM=val;...)
-
- Pas par symbole
- Exemple :
US100=0. 10→ valeurs autorisées : 0. 10, 0 .20, 0.30…
🧯 Comportements de sécurité
- 🧷 Utiliser Min Qty comme lots fixes
-
- Si
true: le SLAVE ignore la taille du master et utilise toujours MinQty (taille fixe)
- Si
- ⚠️ Comportement BelowMin
-
UseMin= si en dessous du min → augmenter au minSkip= si en dessous du min → ne pas ouvrir
- 🔁 Tentatives BadVolume
-
- Si le broker retourne BadVolume, tente de petits ajustements jusqu'à N fois
🎯 Logique de copie SL/TP
- 🛡️ Copier SL/TP en distance lorsque les symboles diffèrent
-
- Si les symboles MASTER et SLAVE diffèrent :
- SL/TP est copié comme distance depuis l'entrée, pas comme prix absolu
- Cela maintient la cohérence des contrôles de risque entre les instruments
✅ Configuration recommandée (USTEC → US100, lot SLAVE = 0. 10)
Sur le SLAVE :
🗺️ Traduction des symboles :
Symbol Map=USTEC=US100
🎛️ Échelle de volume :
Volume Multiplier Map=US100=0,10
🧱 Contraintes du broker :
Min Qty Map=US100=0,10Qty Step Map=US100=0,10
Résultat :
- ✅ MASTER 1. 00 → SLAVE 0. 10 sur US100
☁️ Important : Local/VPS uniquement (pas Cloud) ❌
🖥️ Local/VPS ✅
Fonctionne car MASTER et SLAVE partagent le même LocalStorageScope.Device (même machine/environnement).
☁️ cTrader Cloud ❌
Ne fonctionne pas car les instances Cloud sont isolées, elles ne partagent donc pas LocalStorage et le SLAVE ne peut pas voir les signaux du MASTER.
✅ Conclusion :
- ✔️ Utiliser sur le même PC ou sur un VPS où les deux instances tournent ensemble
- ❌ Pour le Cloud, vous avez besoin d'un relais externe (serveur HTTP/WebSocket)
5 | 67 % | |
4 | 0 % | |
3 | 33 % | |
2 | 0 % | |
1 | 0 % |