🚀 TradeCopierBot — szybkie, czyste i odporne na brokera kopiowanie transakcji (lokalne/VPS) 🔁✨
Kopiuj swoje transakcje z konta MASTER na jedno (lub więcej) kont SLAVE za pomocą lekkiego, zdarzeniowego kopiarki zaprojektowanej do rzeczywistych warunków handlu: różni brokerzy, różne nazwy symboli, różne zasady dotyczące lotów.
Idealne do wykonywania na wielu kontach, skalowania ryzyka oraz dystrybucji strategii — z szczegółowymi logami debugowania, dzięki czemu zawsze wiesz, co się dzieje. 🧠📈
✅ Optymalizowany pod kątem lokalnych / VPS konfiguracji (ta sama maszyna).
❌ Nie jest przeznaczony do cTrader Cloud (instancje są izolowane, więc sygnały nie mogą być współdzielone). ☁️🚫
Uwaga: jeśli masz dwa różne konta cTrader, musisz zakupić dwa cBoty; w przeciwnym razie nie będziesz mógł ich kopiować. Jesteśmy do Twojej pełnej dyspozycji w razie pytań.
🧠 Jak to działa (MASTER → SLAVE) 🧩
🔁 1) Transport sygnału (jak „podróżują” transakcje)
Ta kopiarka używa cTrader LocalStorage (zakres urządzenia) jako wspólnego „magistrali wiadomości”.
✅ MASTER
- Nasłuchuje zdarzeń pozycji: otwarta / zmodyfikowana / zamknięta
- Tworzy
TradeSignal(OTWÓRZ / ZMODYFIKUJ / ZAMKNIJ) - Dodaje go do listy sygnałów w LocalStorageScope.Device
- Wywołuje Flush(), aby SLAVE mógł odczytać go natychmiast
✅ SLAVE
- Uruchamia Timer co Poll Interval sekund
- Wywołuje Reload()
- Odczytuje listę sygnałów
- Przetwarza tylko nowe sygnały (używając
_lastSignalIndexProcessed)
🧷 2) Mapowanie pozycji (aby CLOSE działało)
Gdy SLAVE otwiera transakcję, zapisuje:
🧩 MasterPositionId → SlavePositionId
To mapowanie jest również zapisywane w LocalStorage, więc przetrwa ponowne uruchomienia:
- ✅ CLOSE działa nadal po restarcie
- ✅ MODIFY nadal znajduje poprawną pozycję
🧭 3) Tłumaczenie symboli (symbol MASTER → symbol SLAVE)
🗺️ Mapa symboli (MASTER=SLAVE;...)
Używana, gdy nazwy symboli różnią się między brokerami/kontami.
Format:
MASTER=SLAVE;MASTER2=SLAVE2;...
Przykład (twój przypadek):
- MASTER otwiera
USTEC - SLAVE musi handlować
US100
➡️ USTEC=US100
✅ Lewa strona = symbol pochodzący z MASTER
✅ Prawa strona = symbol u brokera SLAVE
📏 4) Logika wolumenu (kluczowa część) 🔥
✅ Działa w lotach/ilości (obsługa miejsc dziesiętnych)
Aby obsłużyć miejsca dziesiętne (0,10, 0,01 itd.), SLAVE:
- Oblicza pożądane loty
- Stosuje mnożnik / min / krok
- Konwertuje loty → wolumen używając
QuantityToVolumeInUnits(lots) - Wysyła zlecenie używając przeciążenia akceptującego wolumen typu double ✅
Dzięki temu jest odporna nawet gdy brokerzy wymuszają różne zasady precyzji lotów.
⚙️ Wyjaśnienie parametrów (z ikonami)
🧩 Rdzeń
- 🧭 Tryb
-
Master= publikuje sygnałySlave= odczytuje sygnały i kopiuje transakcje
- 🧷 Identyfikator grupy kopiowania
-
- Kanał komunikacji. MASTER i SLAVE muszą się zgadzać (np.
DEFAULT)
- Kanał komunikacji. MASTER i SLAVE muszą się zgadzać (np.
- ⏱️ Interwał odpytywania (sekundy)
-
- SLAVE sprawdza nowe sygnały co N sekund
- 🐞 Tryb debugowania
-
- Drukuje szczegółowe logi (zalecane podczas konfiguracji)
🗺️ Tłumaczenie symboli
- 🧾 Mapa symboli (MASTER=SLAVE;...)
-
- Przykład:
USTEC=US100;XAUUSD=GOLD;NAS100=USTEC
- Przykład:
🎚️ Skalowanie wolumenu (NAJWAŻNIEJSZE) ✅
🔢 Globalny mnożnik
- ➗ Mnożnik wolumenu
-
- Skaluje wszystkie kopiowane loty:
desiredLots = masterLots * VolumeMultiplier
🎛️ Mnożnik na symbol (twoje główne narzędzie)
- 🧷 Mapa mnożników wolumenu (SYM=mult;...)
-
- Nadpisuje mnożnik dla symbolu (symbol po stronie SLAVE)
- Przykład:
-
US100= 0. 10- Włoski format też jest OK:
US100=0,10
✅ Tak osiągasz: 1. 00 na MASTER → 0. 10 na SLAVE
🧱 Ograniczenia lotów brokera (min i krok)
- 🧱 Domyślna minimalna ilość (0=wyłączone)
-
- Globalna minimalna ilość lotów, jeśli włączona
- 🧱 Mapa minimalnej ilości (SYM=val;...)
-
- Minimalna ilość lotów na symbol
- Przykład:
US100=0. 10
- 🪜 Domyślny krok ilości (0=wyłączone)
-
- Globalny krok, jeśli włączony
- 🪜 Mapa kroków ilości (SYM=val;...)
-
- Krok na symbol
- Przykład:
US100=0. 10→ dozwolone wartości: 0. 10, 0 .20, 0.30…
🧯 Zachowania bezpieczeństwa
- 🧷 Użyj Min Qty jako stałych lotów
-
- Jeśli
true: SLAVE ignoruje rozmiar mastera i zawsze używa MinQty (stałe rozmiary)
- Jeśli
- ⚠️ Zachowanie poniżej minimum
-
UseMin= jeśli poniżej min → podnieś do minSkip= jeśli poniżej min → nie otwieraj
- 🔁 Próby BadVolume
-
- Jeśli broker zwraca BadVolume, próbuje drobnych korekt do N razy
🎯 Logika kopiowania SL/TP
- 🛡️ Kopiuj SL/TP jako odległość, gdy symbole się różnią
-
- Jeśli symbole MASTER i SLAVE się różnią:
- SL/TP jest kopiowane jako odległość od wejścia, a nie cena absolutna
- To utrzymuje spójność kontroli ryzyka między instrumentami
✅ Zalecana konfiguracja (USTEC → US100, lot SLAVE = 0. 10)
Na SLAVE:
🗺️ Tłumaczenie symboli:
Symbol Map=USTEC=US100
🎛️ Skalowanie wolumenu:
Volume Multiplier Map=US100=0,10
🧱 Ograniczenia brokera:
Min Qty Map=US100=0,10Qty Step Map=US100=0,10
Wynik:
- ✅ MASTER 1. 00 → SLAVE 0. 10 na US100
☁️ Ważne: tylko lokalne/VPS (nie Cloud) ❌
🖥️ Lokalny/VPS ✅
Działa, ponieważ MASTER i SLAVE dzielą ten sam LocalStorageScope.Device (ta sama maszyna/środowisko).
☁️ cTrader Cloud ❌
Nie działa, ponieważ instancje Cloud są izolowane, więc nie dzielą LocalStorage i SLAVE nie widzi sygnałów MASTER.
✅ Wniosek:
- ✔️ Używaj na tym samym komputerze lub VPS, gdzie obie instancje działają razem
- ❌ W przypadku Cloud potrzebny jest zewnętrzny przekaźnik (serwer HTTP/WebSocket)
5 | 67 % | |
4 | 0 % | |
3 | 33 % | |
2 | 0 % | |
1 | 0 % |