🚀 TradeCopierBot — Быстрое, чистое и защищённое от брокеров копирование сделок (локально/на VPS) 🔁✨
Копируйте свои сделки с МАСТЕР счёта на один (или несколько) СЛЕЙВ счётов с помощью лёгкого, событийно-ориентированного копировщика, разработанного для реальных торговых условий: разные брокеры, разные названия символов, разные правила лотов.
Идеально подходит для исполнения на нескольких счетах, масштабирования риска и распределения стратегий — с подробными журналами отладки, чтобы вы всегда знали, что происходит. 🧠📈
✅ Оптимизировано для локальных / VPS установок (одна и та же машина).
❌ Не предназначено для cTrader Cloud (экземпляры изолированы, поэтому сигналы нельзя передавать). ☁️🚫
Внимание: если у вас два разных аккаунта cTrader, необходимо приобрести два cBot; иначе вы не сможете их копировать. Мы полностью к вашим услугам для любой информации.
🧠 Как это работает (МАСТЕР → СЛЕЙВ) 🧩
🔁 1) Передача сигнала (как «путешествуют» сделки)
Этот копировщик использует cTrader LocalStorage (область устройства) как общий «шина сообщений».
✅ МАСТЕР
- Отслеживает события позиций: Открыта / Изменена / Закрыта
- Создаёт
TradeSignal(ОТКРЫТИЕ / ИЗМЕНЕНИЕ / ЗАКРЫТИЕ) - Добавляет его в список сигналов в LocalStorageScope.Device
- Вызывает Flush() чтобы СЛЕЙВ мог сразу прочитать
✅ СЛЕЙВ
- Запускает таймер каждые Poll Interval секунд
- Вызывает Reload()
- Читает список сигналов
- Обрабатывает только новые сигналы (используя
_lastSignalIndexProcessed)
🧷 2) Сопоставление позиций (чтобы работало ЗАКРЫТИЕ)
Когда СЛЕЙВ открывает сделку, он сохраняет:
🧩 MasterPositionId → SlavePositionId
Это сопоставление также сохраняется в LocalStorage, чтобы сохраняться после перезапуска:
- ✅ ЗАКРЫТИЕ работает после перезагрузки
- ✅ ИЗМЕНЕНИЕ находит правильную позицию
🧭 3) Перевод символов (символ МАСТЕРА → символ СЛЕЙВА)
🗺️ Карта символов (МАСТЕР=СЛЕЙВ;...)
Используется, когда названия символов отличаются между брокерами/аккаунтами.
Формат:
МАСТЕР=СЛЕЙВ;МАСТЕР2=СЛЕЙВ2;...
Пример (ваш случай):
- МАСТЕР открывает
USTEC - СЛЕЙВ должен торговать
US100
➡️ USTEC=US100
✅ Левая сторона = символ, приходящий от МАСТЕРА
✅ Правая сторона = символ у брокера СЛЕЙВА
📏 4) Логика объёма (ключевая часть) 🔥
✅ Работает с лотами/количеством (поддерживаются десятичные)
Для работы с десятичными (0.10, 0.01 и т.д.) СЛЕЙВ:
- Вычисляет желаемые лоты
- Применяет множитель / минимум / шаг
- Преобразует лоты → объём с помощью
QuantityToVolumeInUnits(lots) - Отправляет ордер, используя перегрузку, принимающую double объём ✅
Это делает копировщик устойчивым даже при разных правилах точности лотов у брокеров.
⚙️ Объяснение параметров (с иконками)
🧩 Ядро
- 🧭 Режим
-
Master= публикует сигналыSlave= читает сигналы и копирует сделки
- 🧷 Идентификатор группы копирования
-
- Канал связи. МАСТЕР и СЛЕЙВ должны совпадать (например,
DEFAULT)
- Канал связи. МАСТЕР и СЛЕЙВ должны совпадать (например,
- ⏱️ Интервал опроса (сек)
-
- СЛЕЙВ проверяет новые сигналы каждые N секунд
- 🐞 Режим отладки
-
- Выводит подробные логи (рекомендуется при настройке)
🗺️ Перевод символов
- 🧾 Карта символов (МАСТЕР=СЛЕЙВ;...)
-
- Пример:
USTEC=US100;XAUUSD=GOLD;NAS100=USTEC
- Пример:
🎚️ Масштабирование объёма (САМЫЙ ВАЖНЫЙ) ✅
🔢 Глобальный множитель
- ➗ Множитель объёма
-
- Масштабирует все скопированные лоты:
desiredLots = masterLots * VolumeMultiplier
🎛️ Множитель для каждого символа (ваш основной инструмент)
- 🧷 Карта множителей объёма (SYM=mult;...)
-
- Переопределяет множитель для каждого символа (символ на стороне СЛЕЙВА)
- Пример:
-
US100= 0. 10- Итальянский формат тоже подходит:
US100=0,10
✅ Так вы достигаете: 1.00 на МАСТЕР → 0.10 на СЛЕЙВ
🧱 Ограничения лотов брокера (минимум и шаг)
- 🧱 Мин. количество по умолчанию (0=выкл)
-
- Глобальный минимум лотов, если включено
- 🧱 Карта мин. количества (SYM=val;...)
-
- Минимум лотов для каждого символа
- Пример:
US100=0. 10
- 🪜 Шаг количества по умолчанию (0=выкл)
-
- Глобальный шаг, если включено
- 🪜 Карта шагов количества (SYM=val;...)
-
- Шаг для каждого символа
- Пример:
US100=0. 10→ допустимые значения: 0.10, 0.20, 0.30…
🧯 Поведения безопасности
- 🧷 Использовать мин. количество как фиксированные лоты
-
- Если
true: СЛЕЙВ игнорирует размер мастера и всегда использует MinQty (фиксированный размер)
- Если
- ⚠️ Поведение при ниже минимума
-
UseMin= если ниже минимума → поднять до минимумаSkip= если ниже минимума → не открывать
- 🔁 Попытки исправления плохого объёма
-
- Если брокер возвращает BadVolume, пробует небольшие корректировки до N раз
🎯 Логика копирования SL/TP
- 🛡️ Копировать SL/TP как расстояние, если символы отличаются
-
- Если символы МАСТЕРА и СЛЕЙВА отличаются:
- SL/TP копируется как расстояние от входа, а не как абсолютная цена
- Это сохраняет контроль риска одинаковым для разных инструментов
✅ Рекомендуемая настройка (USTEC → US100, лот СЛЕЙВА = 0.10)
На СЛЕЙВЕ:
🗺️ Перевод символов:
Symbol Map=USTEC=US100
🎛️ Масштабирование объёма:
Volume Multiplier Map=US100=0,10
🧱 Ограничения брокера:
Min Qty Map=US100=0,10Qty Step Map=US100=0,10
Результат:
- ✅ МАСТЕР 1.00 → СЛЕЙВ 0.10 на US100
☁️ Важно: только локально/VPS (не Cloud) ❌
🖥️ Локально/VPS ✅
Работает, потому что МАСТЕР и СЛЕЙВ используют один и тот же LocalStorageScope.Device (одна машина/окружение).
☁️ cTrader Cloud ❌
Не работает, потому что экземпляры Cloud изолированы, они не разделяют LocalStorage, и СЛЕЙВ не видит сигналы МАСТЕРА.
✅ Вывод:
- ✔️ Используйте на одном ПК или VPS, где оба экземпляра работают вместе
- ❌ Для Cloud нужен внешний ретранслятор (HTTP/WebSocket сервер)
5 | 67 % | |
4 | 0 % | |
3 | 33 % | |
2 | 0 % | |
1 | 0 % |