Как создать торгового робота для MT5 с помощью ИИ

31 Янв 2026

117

Как создать торгового робота для MetaTrader 5 с помощью искусственного интеллекта

Современные технологии шагнули далеко вперёд, и сегодня даже трейдеры, не обладающие глубокими навыками программирования, могут создавать собственных торговых роботов — экспертных советников для платформы MetaTrader 5 (MT5). Благодаря развитию искусственного интеллекта и языковых моделей, таких как ChatGPT, написание сложного кода на языке MQL5 стало доступным практически каждому. В этой статье мы подробно разберём, как с нуля создать рабочего эксперта, как исправлять ошибки, адаптировать логику и проводить тестирование, чтобы в итоге получить полностью функционирующего робота, способного торговать по заданным правилам.


Почему стоит использовать ИИ для создания торговых роботов?

Традиционно разработка экспертного советника требует знаний языка программирования MQL5, понимания структуры терминала, а также времени на отладку и тестирование. Однако с появлением мощных языковых моделей процесс упростился. Искусственный интеллект способен:

  • Понимать естественный язык и преобразовывать его в рабочий код;
  • Анализировать ошибки и предлагать исправления;
  • Генерировать логику торговли на основе описательных правил;
  • Повторно перерабатывать код с учётом новых требований.

Это означает, что даже новичок может описать свою торговую идею простыми словами — например, «покупать каждый час в течение первых двух часов европейской сессии» — и получить готовый к использованию алгоритм.


Шаг 1: Формулировка идеи и генерация первого черновика

Первый этап — чётко сформулировать торговую стратегию. Чем конкретнее описание, тем точнее будет результат. Допустим, вы хотите, чтобы робот:

  • Открывал сделки на покупку;
  • Каждые 3 минут;
  • В течение первых двух часов сессии по индексу DAX (немецкий индекс DAX 4);
  • Только одну позицию за раз;
  • Объём сделки — фиксированный;
  • Без автоматического выхода — пока просто вход.

Такой запрос можно ввести в интерфейс ИИ в виде простого текста:

«Напиши эксперта для MT5 на MQL5, который открывает ордер на покупку каждые 3 минут в течение первых двух часов торговой сессии по инструменту German 4. Используй только одну позицию за раз. Объём — .1 лот. Не закрывай сделку автоматически.»

ИИ сгенерирует код, который, скорее всего, будет близок к рабочему, но может содержать ошибки или использовать устаревшие конструкции (например, из MQL4). Это нормально — первый черновик редко бывает идеальным.


Шаг 2: Импорт кода в MetaTrader 5 и первая компиляция

После получения кода его нужно перенести в среду разработки MT5. Для этого:

  1. Откройте терминал MetaTrader 5.
  2. Перейдите в «Навигатор» → «Экспертные советники».
  3. Щёлкните правой кнопкой мыши и выберите «Создать».
  4. В мастере создания выберите «Эксперт-советник».
  5. Укажите имя, например, AutoBuyer, и пройдите по шагам, не изменяя стандартные настройки.
  6. В редакторе кода удалите весь сгенерированный шаблон (Ctrl+A → Delete).
  7. Вставьте код, полученный от ИИ.

Теперь нажмите «Компилировать» (Ctrl+F7). Если всё прошло успешно, вы увидите сообщение « ошибок, предупреждений». Но чаще всего появляются ошибки — и это нормально.


Шаг 3: Работа с ошибками и адаптация кода

Ошибки могут быть разными: синтаксические, логические, несовместимость с MQL5. Например, ИИ мог использовать функции из MQL4, которые в MQL5 устарели. Также возможны проблемы с типами данных, именами переменных или структурой функций.

Важный момент: не пытайтесь исправлять всё вручную. Лучше скопировать текст ошибок из окна компилятора и отправить обратно в ИИ.

Пример запроса:

«При компиляции кода в MT5 возникли следующие ошибки:
'OrderSend' — неизвестная функция
'MarketInfo' — устаревшая функция
'OrdersTotal' — несовместима с MQL5
Перепиши код на чистом MQL5, используя текущие функции: Trade объект, SymbolInfoDouble, PositionsTotal и т.д.»

ИИ перепишет код с учётом требований. Снова вставьте обновлённую версию, скомпилируйте. Повторяйте этот процесс, пока ошибки не исчезнут.


Шаг 4: Добавление логики выхода из сделок

На этом этапе у нас есть робот, который умеет входить в рынок, но не умеет выходить. Это критическая проблема — без правила закрытия позиции робот может накопить огромные убытки.

Добавим простое условие: закрывать все позиции, когда дневная прибыль достигнет 5% от начального баланса.

Отправляем запрос ИИ:

«Добавь в код логику, при которой все открытые позиции закрываются, когда прибыль за день достигает 5% от начального баланса. Учитывай, что баланс может меняться, и расчёт должен быть динамическим. Используй функцию AccountInfoDouble(ACCOUNT_BALANCE) и отслеживай изменения в OnTick

ИИ вставит соответствующие строки: расчёт начального баланса при запуске, проверку текущей прибыли, цикл по открытым позициям и их закрытие.

Но после вставки могут появиться новые ошибки — например, неправильный тип переменной или ошибка в цикле. Снова копируем ошибки, отправляем ИИ, получаем исправленный код.


Шаг 5: Тестирование в стратегическом тестере

Когда код компилируется без ошибок, пора проверить его в тестере. Откройте «Стратегический тестер» (Ctrl+R), выберите:

  • Эксперт-советника;
  • Инструмент — German 4 (DAX);
  • Таймфрейм — 3 минут;
  • Период тестирования — хотя бы несколько недель;
  • Включите визуальный режим.

Запустите тест. Наблюдайте:

  • Появляются ли сделки?
  • Входят ли они в нужное время?
  • Закрываются ли при достижении 5% прибыли?

Возможно, вы заметите, что робот:

  • Открывает сделки слишком часто;
  • Не учитывает наличие уже открытой позиции;
  • Закрывает сделки несвоевременно.

Это повод для следующей итерации.


Шаг 6: Устранение логических ошибок

Одна из частых проблем — робот перестаёт торговать после достижения 5% прибыли. Это происходит, если логика сброса срабатывает только один раз, и начальный баланс больше не обновляется.

Чтобы этого избежать, нужно уточнить задачу:

«После закрытия сделок по достижении 5% прибыли, робот должен продолжать торговлю. Новый цикл должен начинаться с нового значения баланса. То есть, следующие 5% считаются уже от нового уровня.»

ИИ перепишет логику: после закрытия позиций будет обновляться значение "стартового баланса", и расчёт пойдёт заново.

Также важно проверить, не пытается ли робот открыть сделку, если уже есть активная позиция. Добавляем условие:

«Перед открытием новой сделки проверяй, есть ли уже открытая позиция по этому инструменту. Если есть — не открывай.»

ИИ вставит проверку через PositionsTotal() и цикл по PositionGetSymbol().


Шаг 7: Работа с объёмом сделок и ограничениями брокера

Ещё одна распространённая ошибка — превышение допустимого объёма. Например, брокер может ограничивать максимальный объём сделки по DAX 4 до 1 лотов, но робот пытается открыть 237.

Это может произойти, если ИИ использует динамический расчёт объёма на основе баланса, но не учитывает ограничения. Решение:

«Добавь проверку максимального объёма для инструмента. Используй SymbolInfoInteger(SYMBOL_VOLUME_MAX). Если рассчитанный объём превышает лимит — установи объём равным максимуму.»

Также можно задать фиксированный объём, например, 1. или 1., в зависимости от размера счёта и рисков.


Шаг 8: Улучшение логики и добавление фильтров

Чистая стратегия «покупать каждые 3 минут» может быть слишком агрессивной. Чтобы повысить эффективность, добавьте фильтры:

1. Фильтр по времени

Убедитесь, что сделки открываются только в первые два часа сессии:

int sessionStart = 9;  // 9: по UTC+2
int sessionHours = 2;
int currentHour = TimeCurrent().hour;

if(currentHour >= sessionStart && currentHour < sessionStart + sessionHours)
{
   // разрешить вход
}

2. Фильтр по волатильности

Избегайте входа в периоды низкой активности:

«Не открывай сделку, если среднее движение за последние 5 баров меньше 5 пунктов.»

3. Фильтр по тренду

Используйте скользящие средние:

«Открывай сделку только если цена выше скользящей средней 2.»

ИИ легко добавит такие условия, если вы чётко опишете их.


Шаг 9: Проверка журнала и отладка

После каждого теста обязательно проверяйте журнал терминала (вкладка «Журнал» в тестере). Там отображаются:

  • Сообщения от эксперта (Print());
  • Ошибки выполнения;
  • Время входов и выходов;
  • Объёмы сделок.

Если робот ведёт себя не так, как ожидается — ищите подсказки в журнале. Добавьте отладочные сообщения:

Print("Текущий баланс: ", AccountInfoDouble(ACCOUNT_BALANCE));
Print("Начальный баланс: ", initialBalance);
Print("Прибыль: ", profitPercent, "%");

Это поможет понять, почему срабатывает или не срабатывает то или иное условие.


Шаг 1: Итерации и улучшения

Создание робота — это итеративный процесс. Вы:

  1. Описываете идею;
  2. Получаете код;
  3. Тестируете;
  4. Находите ошибки;
  5. Уточняете запрос;
  6. Получаете улучшенный код;
  7. Повторяете.

Каждый цикл приближает вас к стабильной и эффективной стратегии.


Важные замечания по безопасности и тестированию

Прежде чем запускать робота на реальном счёте, обязательно:

1. Проведите глубокое тестирование

  • На разных периодах (минимум 1–2 года);
  • На разных инструментах;
  • В разных рыночных условиях (тренд, флэт, волатильность).

2. Проверьте работу в реальном времени

Запустите робота на демо-счёте с реальными котировками. Сравните результаты с тестером.

3. Учитывайте спред, проскальзывание и задержки

В тестере эти факторы могут быть не учтены. В реальной торговле они влияют на прибыльность.

4. Ограничьте риски

  • Используйте фиксированный объём;
  • Добавьте стоп-лосс;
  • Ограничьте количество сделок в день;
  • Реализуйте дневной стоп-аут при большом убытке.

Преимущества и ограничения подхода

Плюсы:

  • Быстрое прототипирование идей;
  • Доступность для не-программистов;
  • Возможность экспериментировать с логикой без глубоких знаний MQL5;
  • Высокая скорость итераций.

Минусы:

  • ИИ может генерировать логически неверный код;
  • Требуется контроль и проверка;
  • Невозможно полностью доверять автоматической генерации;
  • Риск перегрузки кода избыточной логикой.

Как писать эффективные запросы ИИ

Чтобы получить качественный результат, формулируйте запросы чётко:

✅ Хороший запрос:

«Напиши функцию, которая проверяет, открыта ли позиция по текущему инструменту. Если да — возвращает true, если нет — false. Используй PositionsTotal и PositionGetSymbol.»

❌ Плохой запрос:

«Сделай, чтобы он не открывал сделки, если уже есть.»

Также полезно использовать псевдокод — описать логику по шагам:

  1. Получи текущий баланс.
  2. Рассчитай 5% от начального баланса.
  3. Если текущая прибыль >= 5% — закрой все позиции.
  4. Обнови начальный баланс.
  5. Продолжи торговлю.

ИИ легко преобразует такой план в рабочий код.


Заключение

Создание торгового робота для MetaTrader 5 с помощью искусственного интеллекта — это реальность, доступная сегодня каждому. Процесс не требует глубоких знаний программирования, но требует внимательности, терпения и системного подхода. Ключ к успеху — итерации: генерация, тестирование, анализ, улучшение.

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

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


Важно: Данная статья носит исключительно информационный характер. Торговля на финансовых рынках связана с высокими рисками. Все стратегии и роботы должны проходить тщательное тестирование перед использованием. Автор не несёт ответственности за убытки, возникшие в результате использования описанных методов.

shape shape

Понравилась статья?

Закрепи получиные знания на практике.

Использовать бесплатно

DeepStage - он такой один