AI в MetaTrader 5: от анализа рынка до тестирования торговых стратегий

Искусственный интеллект в MetaTrader 5 — это не просто чат, которому можно задать вопрос о рынке. Благодаря поддержке Model Context Protocol (MCP) AI-агент может работать непосредственно с данными и функциями торговой платформы: анализировать котировки и торговую историю, изучать открытые позиции, работать с графиками, тестировать и оптимизировать советники, а также отправлять торговые ордера брокеру.

В этом видео мы подробно показываем, как устроена интеграция AI в MetaTrader 5, как начать работу со встроенным ассистентом и какие практические задачи можно ему поручать.


Как работает MCP в MetaTrader 5

Model Context Protocol — это открытый стандарт, который предоставляет AI-приложениям единый способ взаимодействия с внешними источниками данных и инструментами. В MetaTrader 5 он выступает связующим звеном между AI-агентом и торговой платформой.

Без такой интеграции пользователю приходится самостоятельно собирать рыночные данные, копировать информацию о счете, передавать скриншоты и переключаться между разными приложениями. MCP позволяет агенту получать необходимый контекст непосредственно из MetaTrader 5 и использовать доступные функции платформы для выполнения поставленной задачи.

Начните со встроенного AI Assistant

Самый простой способ попробовать новые возможности — использовать бесплатного AI-асситента, встроенного непосредственно в MetaTrader 5. Никакая первоначальная настройка не требуется: достаточно просто установить актуальную версию платформы и авторизоваться в MQL5.community.

Сразу после этого вы можете открыть AI-ассистента и поставить ему первую задачу. Например, спросить: «Что ты умеешь?» — агент покажет доступные ему возможности.

Основное преимущество AI-агента проявляется не в выполнении простых действий, которые пользователь и сам может сделать несколькими кликами. Гораздо интереснее многошаговые задачи, где необходимо собрать большой объем данных, проанализировать его, применить заданные условия и получить конкретный результат.

Анализ позиций и торговой истории

AI Assistant может использовать данные торгового счета для комплексного анализа. Например, ему можно поручить сгруппировать все открытые позиции, рассчитать объемы Buy и Sell, показать текущую прибыль или убыток и определить концентрацию по отдельным инструментам.

Диалог можно продолжить дополнительным сценарием: например, попросить оценить, какие из открытых позиций могут сильнее всего отреагировать на укрепление доллара США на 1%.

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

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

Анализ рынка непосредственно в MetaTrader 5

AI-агент может работать с тиками, барами, графиками, объемами, доступными символами и другими данными платформы. Например, можно попросить его проанализировать EURUSD на H1 и H4, определить тренд и волатильность, а также найти уровни поддержки и сопротивления. Агент самостоятельно получит необходимые данные для обоих периодов, проведет анализ и подготовит итоговое резюме.

Для более широкого обзора можно поручить AI Assistant проверить инструменты в «Обзоре рынка», найти символы вблизи семидневных максимумов и минимумов, ранжировать их по волатильности и выделить наиболее выраженные движения.

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

Работа с графиками и торговым окружением

AI Assistant способен не только анализировать информацию, но и подготавливать рабочее пространство MetaTrader 5. Можно одной командой открыть графики нужных инструментов на заданном таймфрейме и применить к ним сохраненный шаблон. Аналогичным образом агент может управлять составом «Обзора рынка» — например, оставить только инструменты с открытыми позициями или недавними сделками и отсортировать их по заданному критерию.

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

Торговые операции через AI

MCP предоставляет AI-агентам доступ к торговым операциям. Они могут открывать, закрывать и модифицировать ордера и позиции.

Наиболее интересны здесь комплексные сценарии. Например, можно попросить агента проверить валютные пары из «Обзора рынка» с помощью MACD, RSI и ATR, выбрать инструменты, наиболее соответствующие заданным условиям, и выполнить соответствующие торговые операции.

Другой пример — автоматическая установка Стоп Лосс и Тейк Профит для существующих позиций и отложенных ордеров с учетом текущей волатильности каждого инструмента и заданного соотношения риска и потенциальной прибыли.

Тестирование и оптимизация торговых роботов

Один из наиболее мощных сценариев применения агентного AI в MetaTrader 5 — работа с тестером стратегий. Обычное тестирование советника состоит из целой последовательности действий: необходимо настроить параметры, запустить тест, дождаться результата, изучить отчет, изменить условия и повторить процесс. Теперь значительную часть этой работы можно поручить AI Assistant.

Например, одной задачей можно попросить протестировать советник на нескольких валютных парах за последние два года с заданными параметрами, сравнить полученные результаты и подготовить выводы. Агент последовательно запустит необходимые тесты и проанализирует их результаты.

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

AI-агент вместо обычного чат-бота

Главное преимущество интеграции AI в MetaTrader 5 заключается в контексте и возможности выполнять действия. Агент получает доступ к необходимым данным платформы и может использовать ее инструменты для решения многошаговых задач.

При этом MetaTrader 5 позволяет управлять доступом AI Assistant к функциям и данным платформы, включая чувствительные операции. Пользователь сам определяет доступные агенту возможности.

Попробуйте бесплатный AI Assistant непосредственно в MetaTrader 5. Начните с простой задачи, а затем переходите к комплексным сценариям: анализируйте рынки и торговую историю, настраивайте рабочее пространство, тестируйте и оптимизируйте советники.

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

С версии 6245 мы включили в AI Assistant полный доступ к www.mql5.com и его поисковику.

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

В качестве примера:

1. Найди мне мои последние комментарии на mql5

Нашёл. Ваш аккаунт MQL5.com — Renat (Renat Fatkhullin, https://www.mql5.com/ru/users/Renat ), поэтому искал по фильтру author=Renat в русскоязычных разделах.

Последние комментарии — форум (10 самых свежих)

Всего в индексе по форуму (ru) для этого автора: 15136 сообщений. Последние по дате:

# Дата (МСК) Тема Ссылка
1 08.10.2026 12:46 Новая версия платформы MetaTrader 4 build 1490 https://www.mql5.com/ru/forum/517374/60528751#comment_60528751
2 08.10.2026 11:14 AI Assistant MT5 https://www.mql5.com/ru/forum/517761/60528406#comment_60528406
3 05.10.2026 18:24 Build 1491: кастомные индикаторы в Навигаторе есть, а на графике пустота https://www.mql5.com/ru/forum/517605/60511941#comment_60511941
4 03.10.2026 11:16 MT5 build 6230: больше возможностей AI https://www.mql5.com/ru/forum/516827/60502981#comment_60502981
5 03.10.2026 09:37 MT5 build 6230: больше возможностей AI https://www.mql5.com/ru/forum/516827/60502800#comment_60502800
6 27.09.2026 17:05 MT5 build 6180: больше ИИ-функций https://www.mql5.com/ru/forum/515540/60471215#comment_60471215
7 27.09.2026 15:24 MT5 build 6180: больше ИИ-функций https://www.mql5.com/ru/forum/515540/60471008#comment_60471008
8 27.09.2026 03:20 MT5 build 6180: больше ИИ-функций https://www.mql5.com/ru/forum/515540/60469984#comment_60469984
9 26.09.2026 21:48 MT5 build 6180: больше ИИ-функций https://www.mql5.com/ru/forum/515540/60469385#comment_60469385
10 15.09.2026 23:23 MT5 build 6180: больше ИИ-функций https://www.mql5.com/ru/forum/515540/60407462#comment_60407462

Кратко о содержании (текст в результатах поиска — фрагменты):

  • «Новая версия платформы MetaTrader 4 build 1490» — «Это исправлено в версии 1492».
  • «AI Assistant MT5» — обновление кластера обслуживания агента по зонам, переезд на новую систему.
  • «Build 1491…» — пояснение про ошибку загрузки EX4 и выпуск апдейта 1492.
  • «MT5 build 6230» — про нестабильность AI-кластера и совет обновить WebView2 (Evergreen Bootstrapper) и драйверы.
  • «MT5 build 6180» — серия ответов про внутренние бюджеты/контекстное окно агента, компактизацию контекста, UTF-8 как базовую кодировку для AI и «~3 триллиона токенов в MQL5 Lite».

Более старые — комментарии к блогам (3 записи)

Дата Пост Ссылка
21.12.2015 Обживаем компилятор MQL5 https://www.mql5.com/ru/blogs/post/656491#comment_2128374
15.02.2015 А СУДЬИ КТО? ИЛИ КОППЕРФИЛЬД ОТДЫХАЕТ! https://www.mql5.com/ru/blogs/post/379720#comment_1366964
15.02.2015 А СУДЬИ КТО? ИЛИ КОППЕРФИЛЬД ОТДЫХАЕТ! https://www.mql5.com/ru/blogs/post/379720#comment_1366666

Прочие разделы

В разделах «Статьи», «CodeBase», «Market», «Фриланс» (ru) под этим автором найдены только старые публикации, не комментарии: OpenCL Test (2012), Flame (2013), MD5 Cloud Decryptor (2015), статья про DLL для MQL5 (2010). То есть свежие комментарии у вас именно на форуме.

Notes:

  • Использован публичный MQL5 Search API ( search.mql5.com/api/query , hl=ru , module=mql5.com.ru.forum , author=Renat , сортировка method=2 — новые первыми).
  • Полнота ограничена поисковым индексом MQL5, русскоязычными разделами и доступными модулями; приведённые тексты — фрагменты выдачи, а не полные сообщения.
  • Если нужен другой аккаунт (не Renat ) или английские разделы ( hl=en ) — скажите, переспрошу с другими параметрами.


Под этот запрос сделано всего 5 MCP запросов, 4 из которых - к поисковику: это очень быстро и экономно

2026.10.08 17:30:34.627    127.0.0.1    get workspace environment
2026.10.08 17:30:34.836    127.0.0.1    web request GET https://search.mql5.com/llms.txt 13276 bytes
2026.10.08 17:30:41.405    127.0.0.1    web request GET https://search.mql5.com/api/query?hl=ru&module=mql5.com.ru.blogs&author=Renat&keyword=&from=0&count=10&method=2 3266 bytes
2026.10.08 17:30:41.423    127.0.0.1    web request GET https://search.mql5.com/api/query?hl=ru&module=mql5.com.ru.forum&author=Renat&keyword=&from=0&count=10&method=2 8645 bytes
2026.10.08 17:31:14.668    127.0.0.1    web request GET https://search.mql5.com/api/query?hl=ru&module=mql5.com.ru.articles%7Cmql5.com.ru.codebase%7Cmql5.com.ru.market%7Cmql5.com.ru.jobs&author=Renat&keyword=&from=0&count=10&method=2 5738 bytes



2. Покажи последнюю спецификацию OrderSend

Нашёл актуальную (последнюю) спецификацию — страница справочника MQL5 обновлена 2026.10.07 (в футере doc-файла: Docs file updated: 2026.10.07 ).

Источник: https://www.mql5.com/ru/docs/trading/ordersend (раздел «Торговые функции»)

Сигнатура

bool OrderSend(
   MqlTradeRequest&   request,     // структура запроса
   MqlTradeResult&    result       // структура ответа
   );

Назначение

Функция OrderSend() предназначена для совершения торговых операций через отправку запросов на торговый сервер.

Параметры

Параметр Направление Описание
request [in] Указатель на структуру типа MqlTradeRequest , описывающую торговое действие клиента
result [in,out] Указатель на структуру типа MqlTradeResult , описывающую результат торговой операции в случае успешного выполнения (возврата true )

Возвращаемое значение

При успешной базовой проверке структур (проверка указателей) возвращается true — это не свидетельствует об успешном выполнении торговой операции. Для подробного описания результата нужно анализировать поля структуры result .

Примечание (ключевые пункты)

  • Запрос проходит несколько стадий проверок на сервере: сначала проверяется корректность заполнения всех необходимых полей request ; при отсутствии ошибок сервер принимает ордер, и OrderSend() возвращает true .
  • Рекомендуется предварительно проверять запрос функцией OrderCheck() , которая вернёт код возврата, будущее значение баланса, средств, плавающей прибыли, требуемую маржу, оставшиеся свободные средства, уровень маржи и комментарий к коду ответа.
  • При отправке рыночного ордера ( action = TRADE_ACTION_DEAL ) true означает лишь, что ордер размещён в торговой системе для дальнейшего выполнения. Сервер может заполнить deal / order в result , если данные известны на момент ответа; события исполнения могут произойти уже после возврата из OrderSend() . Поэтому всегда сначала проверяйте retcode и, при необходимости, retcode_external в структуре result .
  • Принятый ордер хранится на сервере до одного из условий: истечение срока действия, появление встречного запроса, срабатывание ордера по цене исполнения, поступление запроса на отмену.
  • При обработке ордера сервер присылает терминалу событие Trade , обрабатываемое функцией OnTrade() .
  • Результат исполнения запроса можно отслеживать в OnTradeTransaction , причём один торговый запрос вызывает этот обработчик несколько раз (создание ордера, его исполнение, удаление из списка открытых, добавление в историю, добавление сделки, создание позиции).

Смотри также

Дополнительно (учебник, обновлён 20.01.2026): «Отправка торгового запроса: OrderSend и OrderSendAsync» — https://www.mql5.com/ru/book/automation/experts/experts_ordersend_ordersendasync

Notes:

  • На странице есть полный пример-скрипт ( OnStart + SendRandomPendingOrder , DeleteAllOrdersByMagic , GetRandomPrice ), который использует TRADE_ACTION_PENDING , request.magic , SYMBOL_TRADE_STOPS_LEVEL и проверяет result.retcode . Скажите — выгружу его в файл в MQL5/Files/Temp и, при желании, скомпилирую.
  • Сигнатура bool OrderSend(MqlTradeRequest&, MqlTradeResult&) в текущей версии справочника не изменилась по сравнению с предыдущими ревизиями; дата обновления страницы — 2026.10.07.


Всего два запроса MCP tools:

2026.10.08 17:35:45.783    127.0.0.1    web request GET https://search.mql5.com/api/query?hl=ru&module=mql5.com.ru.docs%7Cmql5.com.ru.book&keyword=OrderSend&from=0&count=10 19528 bytes
2026.10.08 17:35:49.990    127.0.0.1    web request GET https://www.mql5.com/ru/docs/trading/ordersend 82170 bytes



3. Покажи мне обсуждения использования OrderSendAsync в mql5 за последние 3 года, прочти все страницы обсуждений и сделай отчет по особенностям и частым ошибкам.

Прочитал все ветки из выборки (загрузка страниц выполнена субагентами, каждый отчёт ниже синтезирован из фактического содержимого страниц).

Что именно прочитано

  • Выборка за 08.10.2023–08.10.2026 (ru-форум, ключ OrderSendAsync ) — 18 совпадений, это полный набор по индексу за окно ( total=18 ).
  • Эти 18 совпадений относятся к 12 темам; для каждой прочитана страница с релевантными комментариями и соседние сообщения.
  • Оговорка: ветки forum/170952 , forum/160683 , forum/93352 содержат тысячи страниц, поэтому читались конкретные страницы с найденными комментариями (а не вся ветка целиком) — «все страницы» здесь означает все страницы, содержащие обсуждение OrderSendAsync за период.

Обсуждения (12 тем, 08.10.2023 – 08.10.2026)

Дата (МСК) Тема Ключевые участники Ссылка Суть по OrderSendAsync
19.05.2026 Как в алготрейдинге спастись от проскальзываний fxsaber, nektomk, Renat Akhtyamov, JRandomTrader, Scriptong 509851 Практика: OrderSend только на выставление отложки, всё остальное (модификация отложки, SL/TP позиции) — OrderSendAsync ; результат — в OnTradeTransaction . «Кругом подводные грабли»
05.05.2025 защита от копитрейдинга fxsaber 485968 При подписке на сигнал OrderSend / OrderSendAsync → RET_REQUEST_AT_DISABLED_CLIENT
16.02.2025 Библиотеки: MT4Orders fxsaber, hini 93352 В Тестере у первого удачного вызова request_id == 0 ; поэтому async в MT4Orders для тестера не реализован
15.02.2025 то же hini 55923665 На реале async даёт TRADE_RETCODE_PLACED , в тестере — TRADE_RETCODE_DONE
11.02.2025 Как гарантированно выставить один отложенный ордер в МТ5? glavforex, s22aa, Scriptong, kurscme 481225 Не async, а синхронный OrderSend + разбор retcode / deal / order ; при пинге > 400 мс OrderSend может вернуться без ответа
21.01.2025 Запуск сервиса из эксперта или индикатора Scriptong, komposter, nektomk 479785 Даже async из одного советника идёт последовательно и медленно; для батча нужен сервис/скрипт
13.09.2024 MT5 build 4570 (анонс) MetaQuotes 473034 Ограничение торговых функций MQL5/Python при подписке на сигнал (коды ответов перечислены)
10.04.2024 Как закрыть позиции без перебора в советнике? AlexeyVik, fxsaber, DNG, boyvlad 465394 Массовое закрытие/переворот — «асинхронка без каких-либо обработок транзакций»; критика закрытия в цикле
06.03.2024 Асинхронная обработка отсылки ордеров darkslane, trampampam, fxsaber, marketeer, nektomk, joo 463563 Как ловить завершение async: логировать события, следить за ORDER_STATE_REQUEST_MODIFY ; bool + «мёртвая» MqlTradeResult
15.01.2024 MT5 build 4150 elibrarius 459334 В тестере эмуляция задержек для async не реализована: логи как у OrderSend
27.11.2023 Не снимаются лимитные ордера в OnDeinit Scriptong, Dziuba, JRandomTrader, fxsaber 458113 Async не мгновенен; при массовых операциях в OnDeinit исчерпывается лимит времени (~2,5 с) и программа «убивается»
02.11.2023 Особенности языка mql5, тонкости и приёмы fxsaber, nektomk 170952 Зафиксирован случай: async-модификация выполнялась дольше 5 секунд ( TRADE_ACTION_MODIFY ); метод — замер до/после вызова
02.11.2023 Любые вопросы новичков по MQL4/MQL5 AlexeyVik, alexander_777 160683 Зависания по 3 минуты при OrderModify / OrderDelete (Финам, OnBookEvent ) → совет перейти на OrderSendAsync

Отчёт: особенности OrderSendAsync

Спецификация (актуальный справочник, ред. 07.10.2026):

bool OrderSendAsync(
   MqlTradeRequest&   request,     // структура запроса
   MqlTradeResult&    result       // структура ответа
   );
  1. Отправка запроса без ожидания ответа сервера; для высокочастотной торговли. true = запрос отправлен (не значит, что дошёл и принят); не отправлен — false .
  2. При успехе retcode = TRADE_RETCODE_PLACED (10008); значимо только request_id , дальше — OnTradeTransaction .
  3. OnTradeTransaction вызывается многократно на один запрос; request / result валидны только для TRADE_TRANSACTION_REQUEST . Ответ сервера даёт событие Trade → OnTrade .
  4. CTrade::SetAsyncMode(true) — официальная точка входа в async для стандартной библиотеки.

Особенности, подтверждённые в прочитанных ветках:

  • Async не быстрее синхронного вызова сам по себе. Scriptong: «Из одного советника даже OrderSendAsync будет выполняться последовательно, причем достаточно медленно… работа с сетью без ожидания ответа сервера — это всё равно дополнительное замедление». Выигрыш — только неблокирующий поток и разрыв «запрос → ответ» при медленном сервере (кейс Финам: синхронные OrderModify / OrderDelete зависали ровно по 3 минуты и давали timeout ).
  • Async не мгновенен и может «зависнуть». fxsaber: «OrderSendAsync может выполняться дольше пяти секунд» ( TRADE_ACTION_MODIFY ), замер — время до/после вызова. nektomk оспаривал измерение, но сам факт автор подтвердил повторным замером.
  • Управление состоянием — только через события. Обсуждение в 463563: trampampam советует сначала логировать OnTradeTransaction и от этого строить логику; marketeer: выводить в лог все структуры событий. Зафиксировано различие набора событий у разных брокеров и даже два ORDER_STATE_PLACED на одну операцию; для модификаций ловят ORDER_STATE_REQUEST_MODIFY .
  • Типовой рабочий шаблон сообщества: синхронный OrderSend на выставление отложки + async на модификации уровня и SL/TP (fxsaber, подхвачено joo и AlexeyVik; там же — «асинхронка без каких-либо обработок транзакций» для закрытий/модификаций, что снимает часть рисков дублей, но повышает риск незамеченных отклонений).
  • Тестер — не эквивалент реальности. Книга/ветка: «В тестере функция OrderSendAsync работает как OrderSend». В тестере retcode = TRADE_RETCODE_DONE вместо PLACED , request_id первого удачного запроса = 0, эмуляция задержек для async не реализована (логи идентичны синхронным). Поэтому fxsaber сознательно не реализовал async в MT4Orders для тестера.
  • Ограничения окружения. Build 4570: при подписке на сигнал все торговые функции MQL5/Python запрещены; OrderSend / OrderSendAsync возвращают RET_REQUEST_AT_DISABLED_CLIENT , OrdersTotal / PositionsTotal → 0 и т.п.

Частые ошибки и грабли

  1. Ждать тикет/статус из result async. nektomk: async возвращает «некий bool … и мёртвую структуру MqlTradeResult по ссылке, с которой ничего сделать нельзя». Тикет и результат — только в OnTradeTransaction (или через собственный реестр request_id ).
  2. Проверять только TRADE_RETCODE_PLACED . В тестере приходит TRADE_RETCODE_DONE (вопрос hini, ответ-подтверждение: на реале PLACED корректно, в тестере — DONE ) → проверка «сломается» ровно на тестере или на нестандартном брокере.
  3. Ждать подтверждения по request_id в тестере. request_id == 0 у первого удачного вызова — код «0 = ошибка» даст ложную тревогу; из-за этого async в MT4Orders для тестера не реализован.
  4. Массовые операции в OnDeinit . Scriptong: async выполняется не мгновенно и «выполнение OnDeinit() попросту исчерпает весь лимит времени»; JRandomTrader: на завершение даётся ~2,5 с, затем советник «убивается»; Dziuba в логе видел CTrade::OrderDelete: MQL5 program is stopped. Trading is disabled . Итог — часть ордеров не снимается.
  5. Ожидать «мгновенной» асинхронности. Зафиксировано > 5 с на async-модификацию; логика без тайм-аутов «залипает».
  6. Строить цепочки зависимых операций на async. Нет гарантии порядка/доставки — при зависимых шагах (закрыть → открыть) нужен синхронный вызов с разбором результата.
  7. Считать sync- OrderSend гарантией. s22aa: при пинге > 400 мс OrderSend может завершиться, не дождавшись ответа; glavforex: даже успешный OrderSend не гарантирует, что ордер выставлен (поле order может остаться пустым). Порядок разбора (Scriptong): сначала retcode , затем deal / order — «достаточно проанализировать три первых поля MqlTradeResult ».
  8. Не логировать транзакции. Без вывода структур в OnTradeTransaction невозможно понять, что реально произошло ( ORDER_STATE_REQUEST_MODIFY , дубли PLACED , отличия по брокерам) — типичная стартовая ошибка (463563).
  9. Ожидать параллелизма от одного советника. Батч «десятков приказов» быстрее и надёжнее делать через сервис/скрипт: «запуск скрипта/сервиса — всего одно сообщение» (Scriptong).
  10. Не учитывать отличия тестера. Async == sync, задержки не эмулируются → «режим с задержками для OrderSendAsync не реализован» (elibrarius). Оптимизации и тайминги из тестера непереносимы на реал.
  11. Ручные флаги ожидания без тайм-аута. Практика «флаг + событие» (kurscme) рабочая, но без аварийного сброса по времени даёт залипание и риск повторной отправки/дублей.
  12. Не проверять ограничения окружения. При подписке на сигнал async вернёт RET_REQUEST_AT_DISABLED_CLIENT — без обработки этого кода логика молча «не торгует».

Практические выводы

  • Учитывайте возврат функции и retcode ( 10008 / 10009 , а в тестере — DONE ), контролируйте request_id , ведите сопоставление request_id → заявка (символ, тип, объём, собственный magic ).
  • Обрабатывайте OnTradeTransaction с логированием структур и обязательным тайм-аутом; не полагайтесь на «мгновенность» и гарантированную доставку событий.
  • Разделяйте: OrderSend — где следующий шаг зависит от результата (постановка, цепочки); OrderSendAsync — независимые массовые операции (пакетные модификации SL/TP, закрытие/переворот пачкой, мультисоветники).
  • Не выполняйте большие пачки в OnDeinit (лимит ~2,5 с); для батчей рассматривайте сервис/скрипт.
  • Не переносите коды и тайминги из тестера на реал; тестируйте поведение в реальном окружении (в том числе на демо-счёте), учитывая, что один тест ничего не гарантирует.

Notes:

  • Ссылки сохранены на исходные страницы с якорями комментариев; тексты приведены как цитаты участников (фрагменты), а не как рекомендации — часть практик («модификации без проверок») повышает риск незамеченных отклонений и требует собственного контроля состояния.
  • Полнота ограничена поисковым индексом MQL5, языком ru и окном 08.10.2023–08.10.2026; крупные многотысячестраничные ветки читались на страницах с релевантными сообщениями, а не целиком.
  • При необходимости могу выгрузить полный список прочитанных сообщений (JSON/CSV) в MQL5/Files/Temp или прогнать дополнительный поиск по английским разделам.





Важно уточнение по работе с сайтом www.mql5.com:

  • не заставляйте выкачивать массово сайт, так как можно нарваться на блокировки
  • скоро мы улучшим защиту сайта, чтобы не блокировало лишний раз.

Существует ли официальный способ установки MT5 на Linux без GUI?

Я использую Claude Code на изолированной Ubuntu (на WSL). Агентам даны широкие разрешения (могут делать все, что не требует sudo).

Я бы с удовольствием подключил Claude Code к MT5. Но не готов заплатить за это безопастностью и не хочу переходить на GUI ради этого.

Не для поиска граалей, а для тестирования mql5 приложений на соответствие requirements specification. Не уверен по поводу тестера стратегий, но mql скрипты с unit тестами хуже не сделали бы.

круто. но с этим не вяжется:
  • не заставляйте выкачивать массово сайт, так как можно нарваться на блокировки
Evgeny Belyaev #:
круто. но с этим не вяжется:
  • не заставляйте выкачивать массово сайт, так как можно нарваться на блокировки

С помощью автоматической связи с новыми возможностями поисковика, необходимость в тотальном сканинге сайта практически исключена.

Теперь основную нагрузку несет поисковик, исключая необходимость полного сканинга.

С билда 6253 в агенте работают субагенты, что улучшает эффективность и параллельность работы.


Покажи пример использования субагентов

✓ subagent: delegate
✓ subagent: delegate
✓ subagent: metatrader5__get_trading_account_info
✓ subagent: metatrader5__list_directory

Оба субагента завершились. Вот демонстрация в действии.

Что было использовано

Два параллельных ad-hoc делегата через delegate :

delegate(instructions="...", async=true, max_turns=12)   → task 20261010_9
delegate(instructions="...", async=true, max_turns=12)   → task 20261010_10
load(source="20261010_9")     // дождаться 1-го
load(source="20261010_10")    // дождаться 2-го

Ключевые принципы делегирования:

  • Read-only исследование параллелится свободно — оба субагента только читали, конфликтов за ресурсы нет.
  • async: true → задачи идут в фоне, затем load(taskId) собирает результаты.
  • max_turns ограничивает стоимость субагента (здесь 12).
  • Инструкции самодостаточны — делегат знает только instructions + source , поэтому pre-flight и явные правила («не торговать», «не включать login/balance») заложены прямо в задание.

Результаты субагентов (синтез)

Субагент 20261010_9 — факты о терминале (read-only):

chart_id symbol period indicators / experts
134154936447362382 USDJPY H1 0 / 0
23427280780490 EURUSD H1 0 / 0
52113180007003 EURUSD H1 0 / 0
  • Открытых графиков: 3, без индикаторов и экспертов.
  • Market Watch: первые 10 из списка NASDAQ-символов (AACG, AADR, AAL … ABEO). Полный счётчик инструментом не возвращён.
  • Счёт: валюта USD, режим маржи netting; experts_trade_allowed = false , mcp_trade_allowed = true .

Субагент 20261010_10 — инвентаризация MQL5 (read-only):

Папка .mq5 / .mqh / .ex5 Примеры
MQL5\Experts 3 / 0 / 0 ChartInChart.mq5 , Server.mq5
MQL5\Indicators 20 / 0 / 6 bbands_stop_v1.mq5 , bbsqueeze.mq5 , correlation.mq5
MQL5\Scripts 28 / 0 / 10 1.mq5 , CanvasTest.mq5 , OpenCLTest.mq5 , OpenPosition1Lot.mq5
MQL5\Include 0 / 13 / 0 Benchmark.mqh , IsNewBar.mqh , OpenCL.mqh , PanelDialog.mqh
MQL5\Files 0 / 0 / 0 hello.py , My.db , ReportHistory-10556606.html , test.txt

Когда какой режим

Режим Вызов Когда применять
Sync delegate(instructions=...) Одна задача, результат нужен сразу
Async delegate(..., async=true) + load(id) Несколько независимых задач параллельно
Source delegate(source="name") Готовый recipe/agent
Combined delegate(source="deploy", instructions="...") Recipe + уточнение

Правила, которые я соблюдал

  • Запись — только с разделением по файлам: два делегата не должны трогать один файл (конфликт). Оба делегата здесь read-only, поэтому риска не было.
  • Секреты не выводятся: субагенту по счёту явно запрещено возвращать login/balance/equity.
  • Делегаты не координируются: планирование разбиения — на ведущем агенте (мне), синтез результатов — тоже здесь.

Замечание по безопасности: один из делегатов отметил рассогласование — experts_trade_allowed = false на терминале, тогда как mcp_trade_allowed = true . Автоторговля сейчас на уровне терминала выключена; это факт окружения, никаких торговых действий не выполнялось.

Renat Fatkhullin #:

С билда 6253 в агенте работают субагенты, что улучшает эффективность и параллельность работы.


Документацию по этой возможности где посмотреть? Или снова методом тыка и МСП будем изучать? 
Vladimir Perervenko #:
Документацию по этой возможности где посмотреть? Или снова методом тыка и МСП будем изучать? 

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

Система самостоятельно решает, как делить общую задачу на части.

Ручное управление через delegate(source: "имя", instructions: "...") имеет малый смысл.


С беты 6285 мы вернули длину контекста в 1 млн токенов для MQL5 Lite и перешли на deepseek-v4.1-flash-1017.

...С беты 6285 мы вернули длину контекста в 1 млн токенов для MQL5 Lite ....

- это очень хорошо, стало сразу заметно, спасибо 

Renat Fatkhullin #:

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

Система самостоятельно решает, как делить общую задачу на части.

Ручное управление через delegate(source: "имя", instructions: "...") имеет малый смысл.


С беты 6285 мы вернули длину контекста в 1 млн токенов для MQL5 Lite и перешли на deepseek-v4.1-flash-1017.

Сегодня решил поискать баг в своём коде строк примерно 6000 плюс библиотеки. Пол дня разъясняю Ассистенту (модель по умолчанию), что он не до конца изучил логику и сделал поспешный вывод об ошибках там, где их нет. Это мой код и я примерно помню как он работает, хотя писал пол года назад и вместе с ним вспоминал нюансы. Но пару багов удалось отловить, что хорошо.

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

И, как то надо ключевые правила пользователя научить сохранять. Я предупредил, что бы ассистент не запускал скрипт, так как сервер с историей не подключен к нужному форекс-дилеру и работа идёт с выгрузкой данных.

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