Настройка IntradeBarBot + SignalRelay

Архитектура с одним экземпляром бота для нескольких графиков — без блокировок брокера

ПЕРЕД ИСПОЛЬЗОВАНИЕМ БОТА ОБЯЗАТЕЛЬНО

Отключите «Подтверждение входа по E-mail» в настройках аккаунта intrade.bar вкладка «Безопасность аккаунта».

РЕКОМЕНДАЦИИ:
— Не торговать вручную в этом аккаунте, чтобы не создавать конфликтов
— Не переключать тип счета и валюту вручную — бот сделает это сам (или отключите авто-переключение)

При первом запуске бот выключен (красная кнопка BOT OFF на графике).
Включается нажатием этой кнопки. Перед реальным счётом протестируйте на демо.
Для просмотра сделок обновляйте страницу брокера в браузере.

Логин и пароль от брокера — не вводятся в настройках бота.
При первом запуске создайте файлы ib_email_20240501.txt и ib_pass_20240501.txt в папке MQL5\Files\ (см. шаг 2).
Это скрывает ваши данные от посторонних — они не хранятся в коде бота.

Новая архитектура — один бот для всех графиков

Проблема: если поставить бота на 10 графиков, каждый из них постоянно шлёт запросы брокеру — баланс, авторизация, сделки. Брокер видит 10 источников и банит аккаунт как подозрительный.

Решение: бот (Master) стоит только на одном графике и один общается с брокером. На остальных графиках стоит лёгкий индикатор SignalRelay, который ловит стрелки индикатора и мгновенно шлёт сигнал Master'у через внутренние события MetaTrader.

БРОКЕР (intrade33.bar)
↑↓ запросы (1 сессия, 1 раз в 5 мин keepalive)
═══ Master Bot (EURUSD M1) ═══
↕ SignalRelay шлёт события (EventChartCustom)
SignalRelay (EURCAD M1) → индикатор + стрелки
SignalRelay (GBPAUD M1) → индикатор + стрелки
SignalRelay (EURUSD M5) → индикатор + стрелки
... и так далее
Преимущества: брокер видит только один источник запросов. Keepalive — раз в 5 минут вместо каждые 2 секунды от 10 ботов. Сигналы обрабатываются мгновенно (FIFO-очередь), задержка — только на HTTP-запрос (сотни миллисекунд).

Установка — пошагово

1
Установите Master Bot на один график

Закиньте IntradeBarBot.ex5 на любой график (например EURUSD M1). После запуска в логе (вкладка «Эксперты») появится строка:

ChartID: 123456789

Запомните это число — его нужно будет указать во всех SignalRelay.

2
Настройте параметры Master Bot

Обязательные параметры (вкладка «Входные параметры» в свойствах советника):

Параметр (русское название)Что указать
Тип опционаSprint (бинарные) или Classic (цифровые)
Фиксированная ставкаtrue (или false для мартингейла)
Домен брокераhttps://intrade33.bar
Авто-переключение счетаtrue (бот сам переключит DEMO/RUB)
Логин и пароль от брокера — скрытый ввод
В настройках бота больше нет полей «Email» и «Пароль» — они убраны из исходного кода, чтобы не светить ваши данные.

При первом запуске:
1. Откройте папку терминала: меню MT5 → File → Open Data Folder → MQL5\Files\
2. Создайте два текстовых файла:
  — ib_email_20240501.txt — впишите одной строкой ваш email
  — ib_pass_20240501.txt — впишите одной строкой ваш пароль
3. Сохраните, поставьте бота на график, нажмите ON
После первой успешной авторизации файлы сохранятся автоматически, удалять их не нужно.
Чтобы сменить логин/пароль — удалите эти файлы, создайте заново и нажмите ON.
Настройки сигналов теперь в SignalRelay — параметры «Имя индикатора», «Код стрелки», «Бар для анализа», «Актив», «Экспирация» удалены из бота. Всё это настраивается в индикаторе SignalRelay (шаг 4).

Остальные параметры (мартингейл, кнопки, цвета) настраивайте по желанию.

3
Установите SignalRelay на остальные графики

На каждый график, где стоит ваш индикатор с сигнальными стрелками, закиньте SignalRelay.ex5.

Важно: SignalRelay — это индикатор, не советник. Его нужно перетащить на график из окна Навигатор → Индикаторы → (пользовательские).
4
Настройте параметры SignalRelay

В окне настроек индикатора укажите:

Параметр (русское название)Что указать
Chart ID мастера (0=откл)Номер из лога Master Bot (п.1)
Способ получения сигнала SIGNAL_OBJECT — по графическим стрелкам
SIGNAL_BUFFER — по буферам индикатора

Для режима SIGNAL_OBJECT (графические стрелки):

Укажите коды стрелок вашего индикатора. Стандартные: для BUY — 241, для SELL — 242.

Параметр (русское название)Что указать
Имя индикатораПрефикс имени объектов-стрелок (например NWE_G для стрелок NWE_GBuy_...). Можно оставить пустым — тогда Relay будет брать все стрелки на графике
Код стрелки BUY (для объектов)Код для CALL / покупки
Код стрелки SELL (для объектов)Код для PUT / продажи
Как узнать коды стрелок вашего индикатора:
1. Откройте исходный код индикатора *.mq5
2. Найдите OBJPROP_ARROWCODE — рядом будет число (например ObjectSetInteger(0, name, OBJPROP_ARROWCODE, 241))
3. Если в коде нет OBJPROP_ARROWCODE — индикатор рисует стрелки через буферы, используйте режим SIGNAL_BUFFER
4. Если к исходнику доступа нет — попробуйте стандартные 241/242, они подходят для большинства стрелочных индикаторов

Для режима SIGNAL_BUFFER (буферы индикатора):

Параметр (русское название)Что указать
Имя индикатораПолное имя файла индикатора (без пути, без .ex5), например MyArrowIndicator
Номер буфера для CALLНомер буфера индикатора, где появляется сигнал на покупку
Номер буфера для PUTНомер буфера индикатора, где появляется сигнал на продажу

Общие параметры (для обоих режимов):

Параметр (русское название)Что указать
Бар для сигнала0 — текущий бар, 1 — закрытый бар (рекомендуется)
Инвертировать сигналtrue — если ваш индикатор даёт противоположные сигналы
Экспирация (мин) для Master'аВремя экспирации в минутах для этого инструмента
Задержка перед отправкойЗадержка в минутах перед отправкой сигнала Master'у

Второй сигнал (Signal 2):

SignalRelay может работать с двумя разными индикаторами на одном графике. Второй сигнал включается отдельной настройкой и имеет собственный набор параметров — свой режим, свой индикатор, свои коды стрелок или буферы.

Параметр (русское название)Что указать
Включить сигнал 2true — второй сигнал активен, false — выключен
Способ получения сигнала 2SIGNAL_OBJECT или SIGNAL_BUFFER

Для режима SIGNAL_OBJECT (сигнал 2):

Параметр (русское название)Что указать
Имя индикатора (сигнал 2)Префикс имени объектов-стрелок второго индикатора
Код стрелки BUY (сигнал 2)Код для CALL / покупки
Код стрелки SELL (сигнал 2)Код для PUT / продажи

Для режима SIGNAL_BUFFER (сигнал 2):

Параметр (русское название)Что указать
Имя индикатора (сигнал 2)Полное имя файла индикатора (без .ex5)
Номер буфера для CALL (сигнал 2)Номер буфера покупки
Номер буфера для PUT (сигнал 2)Номер буфера продажи

Общие параметры (сигнал 2):

Параметр (русское название)Что указать
Бар для сигнала 20 — текущий бар, 1 — закрытый бар
Инвертировать сигнал 2true — если нужно инвертировать
Экспирация (мин) сигнал 2Время экспирации для второго сигнала
Задержка перед отправкой (сигнал 2)Задержка в минутах перед отправкой
Настройки сигналов полностью переехали в SignalRelay. В боте их больше нет — бот только принимает готовые сигналы от Relay и отправляет сделки брокеру.
5
Проверьте логи

После запуска SignalRelay в логе (вкладка «Эксперты») должно появиться:

SignalRelay: master chart ID=123456 local chart ID=654321 symbol=EURCAD period=PERIOD_M1

Когда индикатор рисует стрелку — Relay шлёт событие, Master получает его:

Relay signal: CALL EURCAD
Queue: 1 signal(s) pending
HandleSignal: CALL EURCAD immediate
SendDeal: CALL EURCAD amt=100.00 exp=5min ...
6
Включите бота кнопкой на графике

На графике Master Bot'а нажмите красную кнопку BOT OFF — она станет зелёной BOT ON. Бот начнёт принимать сигналы от Relay и отправлять сделки.


Как это работает под капотом

SignalRelay

  • Работает в двух режимах: OBJECT (сканирует OBJ_ARROW) или BUFFER (читает буферы индикатора через iCustom)
  • В OBJECT-режиме фильтрует по префиксу имени индикатора (или берёт все стрелки)
  • Определяет направление (CALL/PUT) по коду стрелки или по имени объекта
  • При новом сигнале шлёт событие Master'у через EventChartCustom
  • Отслеживает уже обработанные объекты (не отправляет повторно)
  • Поддерживает задержку отправки, фильтр по времени, пропуск начала часа, фильтр новостей
  • Поддерживает два независимых источника сигналов (Signal 1 и Signal 2) с раздельными настройками
  • НЕ обращается к брокеру вообще

Master Bot

  • Принимает сигналы от Relay в OnChartEvent
  • Складывает их в FIFO-очередь
  • Обрабатывает по одному сигналу за тик (не блокирует терминал)
  • Отправляет сделку брокеру через HTTP
  • Keepalive: 1 раз в 5 минут (обновление PHPSESSID + проверка баланса)
  • При 5+ неудачных отправках подряд — переавторизация (но не чаще раза в 10 мин)

Жизненный цикл сделки — как бот работает шаг за шагом

Важно понимать: бот не открывает две сделки по одному символу от одного источника одновременно. Но если источники разные (relay1 и relay2), сделки по одному символу могут идти параллельно. А для фиксированной ставки — новый сигнал проходит сразу после экспирации предыдущего, не дожидаясь подтверждения брокера.
1
SignalRelay обнаруживает сигнал

Индикатор рисует стрелку → Relay видит новую стрелку, запоминает её и отправляет событие Master'у. Relay не обращается к брокеру — он только ловит сигналы.

2
Master получает сигнал и проверяет: можно ли открыть сделку?

Бот смотрит все свои активные сделки (которые ещё у брокера).

  • Если по этому же символу и источнику уже есть сделка — бот проверяет:
    • Источник использует мартингейл — нужно дождаться результата предыдущей сделки, чтобы рассчитать сумму. Сигнал пропускается.
    • Источник использует фиксированную ставку и экспирация предыдущей сделки уже прошла — новый сигнал проходит, бот не ждёт подтверждения брокера (старый результат доедет позже).
    • Экспирация ещё не прошла — сигнал пропускается.
  • Если активных сделок по этому символу и источнику нет — бот отправляет сделку брокеру

Сигналы по другим символам (например EURUSD → EURCAD) не блокируются — бот торгует каждый символ независимо. Сигналы от разных источников (relay1 и relay2) по одному символу не блокируют друг друга.

3
Сделка отправлена — статус «открыта»

Бот отправляет HTTP-запрос брокеру и запоминает ID сделки. Статус сделки — 0 (открыта).

С этого момента любое количество новых сигналов по этому же символу будет отклоняться (шаг 2), пока сделка не завершится.

4
Ожидание экспирации

Бот ждёт, пока пройдёт время экспирации (например 5 минут). В это время он:

  • Продолжает принимать и обрабатывать сигналы по другим символам
  • Проверяет результат старых сделок (только после экспирации + 10 секунд)
  • Делает keepalive-запрос брокеру (раз в 5 минут)
5
Проверка результата

После экспирации бот запрашивает у брокера результат сделки по её ID. Брокер отвечает: выигрыш, проигрыш или возврат.

  • ✅ WIN — ставка сработала. PnL = выплата − ставка. Шаг мартингейла обнуляется.
  • ❌ LOSS — ставка не сработала. PnL = −ставка. Шаг мартингейла увеличивается на 1.
  • 🔄 REFUND — ни выигрыш, ни проигрыш (например технический возврат). PnL = 0. Шаг мартингейла не меняется.

После обработки результата сделка помечается как закрытая и больше не блокирует новые сигналы по этому символу.

6
Следующий сигнал — открытие новой сделки

Когда закрытая сделка освободила символ, новый сигнал может пройти (шаг 2 вернёт «нет активной сделки»).

  • Если прошлая сделка была WIN → мартингейл сброшен (шаг 0). Новая сделка открывается базовой суммой.
  • Если прошлая сделка была LOSS → мартингейл увеличился на 1. Новая сделка открывается по формуле: базовая сумма × множитель^шаг
7
Если шагов мартингейла слишком много

Когда бот теряет несколько раз подряд и шаг достигает максимального — мартингейл сбрасывается в 0. Следующая сделка открывается базовой суммой. Это страховка от бесконечного увеличения ставки.

Наглядный пример:

Сигнал EURAUD → бот открывает сделку на 100₽ (5 мин).
Через 1 минуту приходит ещё один сигнал EURAUD → 🚫 пропущен (сделка ещё открыта).
Через 4 минуты сделка закрывается LOSS → шаг мартингейла = 1.
Приходит новый сигнал EURAUD → бот открывает сделку на 200₽ (если множитель 2.0).

Без этой защиты: обе сделки по 100₽ ушли бы в минус, а мартингейл считал бы одну потерю, открывая следующую сделку на 200₽ вместо нужных 400₽.

Совместимость: OBJECT vs BUFFER

Режим OBJECT Графические объекты

SignalRelay сканирует на графике стрелки (OBJ_ARROW), которые рисует ваш индикатор. Определяет направление по коду символа или по имени объекта.

Параметр в RelayОписание
Способ получения сигналаSIGNAL_OBJECT
Имя индикатораПрефикс имени объекта на графике (можно пусто — все стрелки)
Код стрелки BUY (для объектов)Код символа для CALL
Код стрелки SELL (для объектов)Код символа для PUT
Бар для сигнала1 — закрытый бар
Подходит для: индикаторов, которые создают объекты на графике через ObjectCreate с типом OBJ_ARROW

Режим BUFFER Буферы индикатора

SignalRelay загружает индикатор через iCustom и читает значения из его буферов. Если значение не 0 и не EMPTY_VALUE — сигнал есть.

Параметр в RelayОписание
Способ получения сигналаSIGNAL_BUFFER
Имя индикатораПолное имя файла индикатора (без .ex5)
Номер буфера для CALLНомер буфера покупки
Номер буфера для PUTНомер буфера продажи
Бар для сигнала1 — закрытый бар
Подходит для: индикаторов с типом отрисовки DRAW_ARROW или буферов с числовыми сигналами

Двойной сигнал — два индикатора на одном графике

SignalRelay v1.6 умеет работать с двумя разными индикаторами одновременно. Это позволяет получать сигналы от двух стратегий на одном графике и торговать их независимо.

Как это работает

  • Signal 1 и Signal 2 — два полностью независимых набора настроек
  • Каждый сигнал можно включить или выключить отдельной настройкой
  • Каждый сигнал поддерживает как OBJECT, так и BUFFER режим — со своим именем индикатора, кодами стрелок и номерами буферов
  • Сигналы могут использовать один и тот же индикатор или разные
  • Сигналы не мешают друг другу — обработка идёт параллельно

Мартингейл и ставки

  • Шаги мартингейла считаются отдельно для каждого источника сигнала (relay1 / relay2)
  • Потеря на сигнале 1 увеличивает шаг только для сигнала 1
  • Для каждого сигнала можно выбрать: мартингейл или фиксированная сумма
  • Сигнал 2 может всегда использовать фиксированную ставку, даже если для сигнала 1 включён мартингейл
Где это нужно: например, на одном графике стоят два индикатора — один даёт трендовые сигналы (Signal 1), другой контр-трендовые (Signal 2). Или вы хотите торговать один и тот же актив по двум разным стратегиям. Или один сигнал — мартингейлом, а другой — фиксированной суммой.

Параметры сделок и мартингейл

Параметр (русское название)Описание
Фиксированная ставкаtrue — всегда ставит одну сумму. false — мартингейл
Фикс. ставка для сигнала 2true — второй сигнал всегда использует фиксированную сумму, даже если для первого сигнала включён мартингейл. false — следует общим правилам мартингейла
Начальная ставка (мартингейл)Базовая сумма, от которой множитель
Множитель мартингейлаКоэффициент: ставка = начальная × множитель^шаг
Шагов мартингейлаМаксимум увеличений, после сброс
Режим мартингейла На следующем сигнале — ждать стрелку индикатора
(форсированная сделка на баре невозможна — результат предыдущей сделки ещё неизвестен)
Мин. ставка (RUB/USD)Нижняя граница для суммы
Макс. ставка (RUB/USD)Верхняя граница для суммы
Важно о мартингейле: шаг сбрасывается при WIN, увеличивается при LOSS. При REFUND (возврат) шаг не меняется. При выключении бота кнопкой — сброс в 0.
Для каждого источника сигнала можно выбрать свой режим: мартингейл или фиксированная сумма. Например, сигнал 1 может работать по мартингейлу, а сигнал 2 — всегда фиксированной ставкой.

Частые проблемы

SignalRelay не отправляет сигналы
Проверьте: Chart ID мастера (0=откл) должен быть верным (посмотрите в логе Master Bot'а строку ChartID: ...). В OBJECT-режиме: Имя индикатора — это префикс имени объектов-стрелок. В BUFFER-режиме: Имя индикатора — это имя файла индикатора (без .ex5), а номера буферов должны быть правильными.
Master Bot не получает сигналы
Убедитесь, что Master Bot включён (кнопка BOT ON). Проверьте в логе строку Relay signal: ... — она появляется при получении события. Если нет — ChartID указан неверно.
Пустой ответ от брокера (trade ID not found)
Обычно это значит, что сессия (PHPSESSID) протухла. Бот сам обновляет её раз в 5 минут. Если проблема повторяется — перезапустите Master Bot (снимите с графика и поставьте заново).
Bot: OFF by default
После каждого запуска бот по умолчанию выключен (безопасность). Нажмите красную кнопку на графике Master Bot'а чтобы включить.

CSV-статистика сделок

Файл IntradeBar_log.csv находится в папке терминала: Меню MT5 → File → Open Data Folder → MQL5\Files\

КолонкаОписание
TradeIDНомер сделки на сервере
DirectionCALL (вверх) или PUT (вниз)
AssetТоргуемый актив
AmountСумма ставки
OpenTimeВремя открытия
ExpiryTimeВремя экспирации
OpenPriceЦена открытия
ClosePriceЦена закрытия
ResultWIN / LOSS / REFUND
P&LФинансовый результат
Sourcerelay1 (от SignalRelay, сигнал 1) / relay2 (от SignalRelay, сигнал 2) / manual (кнопка) / auto (локальный сигнал)
BarTimeВремя бара сигнала
HTML-отчёт после сессии: при выключении бота (кнопка BOT OFF) в той же папке MQL5\Files\ создаётся файл IntradeBar_report.html — цветная таблица всех сделок (WIN — зелёный, LOSS — красный, REFUND — оранжевый) со сводкой статистики (всего/побед/поражений/возвратов/процент побед).

Коды стрелок (Wingdings)

КодСимволНазначение
241↑ зелёнаяПокупка
242↓ краснаяПродажа
110■ квадратПре-сигнал
233▲Вверх (альтернатива)
234▼Вниз (альтернатива)
236◆Нейтральная (сделка)

Если обе стрелки имеют одинаковый код — бот определит направление по имени объекта (Buy/Sell, Up/Down).

IntradeBarBot v1.9 + SignalRelay v1.6 — Master + Relay архитектура