🚀 TradeCopierBot — Copia di trading veloce, pulita e a prova di broker (Locale/VPS) 🔁✨
Copia le tue operazioni da un MASTER account a uno (o più) SLAVE account con un copier leggero e basato su eventi progettato per condizioni di trading reali: broker diversi, nomi simboli diversi, regole di lotto diverse.
Perfetto per esecuzione multi-account, scalatura del rischio e distribuzione della strategia—con log di debug dettagliati così sai sempre cosa sta succedendo. 🧠📈
✅ Ottimizzato per configurazioni Local / VPS (stessa macchina).
❌ Non progettato per cTrader Cloud (le istanze sono isolate, quindi i segnali non possono essere condivisi). ☁️🚫
Attenzione: se hai due account cTrader diversi, devi acquistare due cBot; altrimenti non potrai copiarli. Siamo a tua completa disposizione per qualsiasi informazione.
🧠 Come funziona (MASTER → SLAVE) 🧩
🔁 1) Trasporto del segnale (come “viaggiano” le operazioni)
Questo copier utilizza cTrader LocalStorage (ambito dispositivo) come “bus di messaggi” condiviso.
✅ MASTER
- Ascolta gli eventi di posizione: Aperta / Modificata / Chiusa
- Crea un
TradeSignal(OPEN / MODIFY / CLOSE) - Lo aggiunge a una lista di segnali in LocalStorageScope .Device
- Chiama Flush() così lo SLAVE può leggerlo immediatamente
✅ SLAVE
- Esegue un Timer ogni Intervallo di Poll secondi
- Chiama Reload()
- Legge la lista dei segnali
- Processa solo nuovi segnali (usando
_lastSignalIndexProcessed)
🧷 2) Mappatura delle posizioni (per far funzionare CLOSE)
Quando lo SLAVE apre un’operazione, memorizza:
🧩 MasterPositionId → SlavePositionId
Questa mappatura viene salvata anche in LocalStorage, quindi sopravvive ai riavvii:
- ✅ CLOSE funziona ancora dopo il riavvio
- ✅ MODIFY trova ancora la posizione corretta
🧭 3) Traduzione del simbolo (simbolo MASTER → simbolo SLAVE)
🗺️ Mappa dei simboli (MASTER=SLAVE;...)
Usata quando i nomi dei simboli differiscono tra broker/account.
Formato:
MASTER=SLAVE;MASTER2=SLAVE2;...
Esempio (il tuo caso):
- MASTER apre
USTEC - SLAVE deve operare su
US100
➡️ USTEC=US100
✅ Lato sinistro = simbolo proveniente da MASTER
✅ Lato destro = simbolo sul broker SLAVE
📏 4) Logica del volume (la parte chiave) 🔥
✅ Funziona in lotti/quantità (decimali supportati)
Per gestire i decimali (0.10, 0.01, ecc.), lo SLAVE:
- Calcola i lotti desiderati
- Applica moltiplicatore / min / passo
- Converte lotti → volume usando
QuantityToVolumeInUnits(lots) - Invia l’ordine usando un overload che accetta volume double ✅
Questo lo rende robusto anche quando i broker applicano regole di precisione dei lotti diverse.
⚙️ Parametri spiegati (con icone)
🧩 Core
- 🧭 Modalità
-
Master= pubblica segnaliSlave= legge segnali e copia operazioni
- 🧷 Id Gruppo Copia
-
- Canale di comunicazione. MASTER e SLAVE devono corrispondere (es.
DEFAULT)
- Canale di comunicazione. MASTER e SLAVE devono corrispondere (es.
- ⏱️ Intervallo di Poll (sec)
-
- SLAVE controlla nuovi segnali ogni N secondi
- 🐞 Modalità Debug
-
- Stampa log dettagliati (consigliato durante la configurazione)
🗺️ Traduzione simboli
- 🧾 Mappa dei simboli (MASTER=SLAVE;...)
-
- Esempio:
USTEC=US100;XAUUSD=GOLD;NAS100=USTEC
- Esempio:
🎚️ Scalatura del volume (MOLTO IMPORTANTE) ✅
🔢 Moltiplicatore globale
- ➗ Moltiplicatore del volume
-
- Scala tutti i lotti copiati:
desiredLots = masterLots * VolumeMultiplier
🎛️ Moltiplicatore per simbolo (il tuo strumento principale)
- 🧷 Mappa moltiplicatore volume (SYM=mult;...)
-
- Sovrascrive il moltiplicatore per simbolo (simbolo lato SLAVE)
- Esempio:
-
US100= 0. 10- Il formato italiano va bene:
US100=0,10
✅ Ecco come ottieni: 1. 00 su MASTER → 0. 10 su SLAVE
🧱 Vincoli del lotto del broker (minimo e passo)
- 🧱 Quantità minima predefinita (0=disattivato)
-
- Minimo globale dei lotti se abilitato
- 🧱 Mappa quantità minima (SYM=val;...)
-
- Lotti minimi per simbolo
- Esempio:
US100=0. 10
- 🪜 Passo quantità predefinito (0=disattivato)
-
- Passo globale se abilitato
- 🪜 Mappa passo quantità (SYM=val;...)
-
- Passo per simbolo
- Esempio:
US100=0. 10→ valori consentiti: 0. 10, 0 .20, 0.30…
🧯 Comportamenti di sicurezza
- 🧷 Usa Quantità Minima come Lotti Fissi
-
- Se
true: SLAVE ignora la dimensione master e usa sempre MinQty (dimensionamento fisso)
- Se
- ⚠️ Comportamento BelowMin
-
UseMin= se sotto il minimo → alza al minimoSkip= se sotto il minimo → non apre
- 🔁 Tentativi BadVolume
-
- Se il broker restituisce BadVolume, prova piccoli aggiustamenti fino a N volte
🎯 Logica copia SL/TP
- 🛡️ Copia SL/TP come distanza quando il simbolo differisce
-
- Se i simboli MASTER e SLAVE differiscono:
- SL/TP viene copiato come distanza dall’entrata, non prezzo assoluto
- Questo mantiene i controlli di rischio coerenti tra gli strumenti
✅ Configurazione consigliata (USTEC → US100, lotto SLAVE = 0. 10)
Sul SLAVE:
🗺️ Traduzione simboli:
Symbol Map=USTEC=US100
🎛️ Scalatura volume:
Volume Multiplier Map=US100=0,10
🧱 Vincoli broker:
Min Qty Map=US100=0,10Qty Step Map=US100=0,10
Risultato:
- ✅ MASTER 1. 00 → SLAVE 0. 10 su US100
☁️ Importante: solo Locale/VPS (non Cloud) ❌
🖥️ Locale/VPS ✅
Funziona perché MASTER e SLAVE condividono lo stesso LocalStorageScope .Device (stessa macchina/ambiente).
☁️ cTrader Cloud ❌
Non funziona perché le istanze Cloud sono isolate, quindi non condividono LocalStorage e lo SLAVE non può vedere i segnali MASTER.
✅ Conclusione:
- ✔️ Usalo sullo stesso PC o su un VPS dove entrambe le istanze girano insieme
- ❌ Per Cloud serve un relay esterno (server HTTP/WebSocket)
5 | 67 % | |
4 | 0 % | |
3 | 33 % | |
2 | 0 % | |
1 | 0 % |