AI в MetaTrader 5: от анализа рынка до тестирования торговых стратегий
С версии 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 сообщений. Последние по дате:
Кратко о содержании (текст в результатах поиска — фрагменты):
- «Новая версия платформы 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.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 , причём один торговый запрос вызывает этот обработчик несколько раз (создание ордера, его исполнение, удаление из списка открытых, добавление в историю, добавление сделки, создание позиции).
Смотри также
- Типы торговых операций ( ENUM_TRADE_REQUEST_ACTIONS ) — https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions
- Структура торгового запроса MqlTradeRequest — https://www.mql5.com/ru/docs/constants/structures/mqltraderequest
- Структура результата торгового запроса MqlTradeResult — https://www.mql5.com/ru/docs/constants/structures/mqltraderesult
- Структура результатов проверки MqlTradeCheckResult — https://www.mql5.com/ru/docs/constants/structures/mqltradecheckresult
- OrderSendAsync — https://www.mql5.com/ru/docs/trading/ordersendasync
Дополнительно (учебник, обновлён 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 // структура ответа );
- Отправка запроса без ожидания ответа сервера; для высокочастотной торговли. true = запрос отправлен (не значит, что дошёл и принят); не отправлен — false .
- При успехе retcode = TRADE_RETCODE_PLACED (10008); значимо только request_id , дальше — OnTradeTransaction .
- OnTradeTransaction вызывается многократно на один запрос; request / result валидны только для TRADE_TRANSACTION_REQUEST . Ответ сервера даёт событие Trade → OnTrade .
- 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 и т.п.
Частые ошибки и грабли
- Ждать тикет/статус из result async. nektomk: async возвращает «некий bool … и мёртвую структуру MqlTradeResult по ссылке, с которой ничего сделать нельзя». Тикет и результат — только в OnTradeTransaction (или через собственный реестр request_id ).
- Проверять только TRADE_RETCODE_PLACED . В тестере приходит TRADE_RETCODE_DONE (вопрос hini, ответ-подтверждение: на реале PLACED корректно, в тестере — DONE ) → проверка «сломается» ровно на тестере или на нестандартном брокере.
- Ждать подтверждения по request_id в тестере. request_id == 0 у первого удачного вызова — код «0 = ошибка» даст ложную тревогу; из-за этого async в MT4Orders для тестера не реализован.
- Массовые операции в OnDeinit . Scriptong: async выполняется не мгновенно и «выполнение OnDeinit() попросту исчерпает весь лимит времени»; JRandomTrader: на завершение даётся ~2,5 с, затем советник «убивается»; Dziuba в логе видел CTrade::OrderDelete: MQL5 program is stopped. Trading is disabled . Итог — часть ордеров не снимается.
- Ожидать «мгновенной» асинхронности. Зафиксировано > 5 с на async-модификацию; логика без тайм-аутов «залипает».
- Строить цепочки зависимых операций на async. Нет гарантии порядка/доставки — при зависимых шагах (закрыть → открыть) нужен синхронный вызов с разбором результата.
- Считать sync- OrderSend гарантией. s22aa: при пинге > 400 мс OrderSend может завершиться, не дождавшись ответа; glavforex: даже успешный OrderSend не гарантирует, что ордер выставлен (поле order может остаться пустым). Порядок разбора (Scriptong): сначала retcode , затем deal / order — «достаточно проанализировать три первых поля MqlTradeResult ».
- Не логировать транзакции. Без вывода структур в OnTradeTransaction невозможно понять, что реально произошло ( ORDER_STATE_REQUEST_MODIFY , дубли PLACED , отличия по брокерам) — типичная стартовая ошибка (463563).
- Ожидать параллелизма от одного советника. Батч «десятков приказов» быстрее и надёжнее делать через сервис/скрипт: «запуск скрипта/сервиса — всего одно сообщение» (Scriptong).
- Не учитывать отличия тестера. Async == sync, задержки не эмулируются → «режим с задержками для OrderSendAsync не реализован» (elibrarius). Оптимизации и тайминги из тестера непереносимы на реал.
- Ручные флаги ожидания без тайм-аута. Практика «флаг + событие» (kurscme) рабочая, но без аварийного сброса по времени даёт залипание и риск повторной отправки/дублей.
- Не проверять ограничения окружения. При подписке на сигнал 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 тестами хуже не сделали бы.
- не заставляйте выкачивать массово сайт, так как можно нарваться на блокировки
круто. но с этим не вяжется:
- не заставляйте выкачивать массово сайт, так как можно нарваться на блокировки
С помощью автоматической связи с новыми возможностями поисковика, необходимость в тотальном сканинге сайта практически исключена.
Теперь основную нагрузку несет поисковик, исключая необходимость полного сканинга.
С билда 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 . Автоторговля сейчас на уровне терминала выключена; это факт окружения, никаких торговых действий не выполнялось.
Документацию по этой возможности где посмотреть? Или снова методом тыка и МСП будем изучать?
Субагенты - это внутренняя самостоятельная функция агента по оптимизации и ускорению решения задач.
Система самостоятельно решает, как делить общую задачу на части.
Ручное управление через delegate(source: "имя", instructions: "...") имеет малый смысл.
С беты 6285 мы вернули длину контекста в 1 млн токенов для MQL5 Lite и перешли на deepseek-v4.1-flash-1017.
...С беты 6285 мы вернули длину контекста в 1 млн токенов для MQL5 Lite ....
- это очень хорошо, стало сразу заметно, спасибо
Субагенты - это внутренняя самостоятельная функция агента по оптимизации и ускорению решения задач.
Система самостоятельно решает, как делить общую задачу на части.
Ручное управление через delegate(source: "имя", instructions: "...") имеет малый смысл.
С беты 6285 мы вернули длину контекста в 1 млн токенов для MQL5 Lite и перешли на deepseek-v4.1-flash-1017.
Сегодня решил поискать баг в своём коде строк примерно 6000 плюс библиотеки. Пол дня разъясняю Ассистенту (модель по умолчанию), что он не до конца изучил логику и сделал поспешный вывод об ошибках там, где их нет. Это мой код и я примерно помню как он работает, хотя писал пол года назад и вместе с ним вспоминал нюансы. Но пару багов удалось отловить, что хорошо.
Вывод такой - ассистент должен уметь подготавливать с помощью агента блок-схему, по которой будет извлекаться код для анализа, иначе теряет связи, когда одна функция вложена в другую и в ней происходят локальные изменения начальных переменных, переданных в функцию. Это как пример. В общем плохо видит модель всю картину происходящего - нужно сжатое представление, которое она сможет разворачивать при необходимости. Или не знаю, чего она там тупит, но без критического мышления по прежнему нельзя работать.
И, как то надо ключевые правила пользователя научить сохранять. Я предупредил, что бы ассистент не запускал скрипт, так как сервер с историей не подключен к нужному форекс-дилеру и работа идёт с выгрузкой данных.
Он это понимал, но потом, после очередной суммаризации забыл, и начал в скрипте шуровать в попытках запустить его и найти несуществующие торговые инструменты на демо счёте.
Искусственный интеллект в 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. Начните с простой задачи, а затем переходите к комплексным сценариям: анализируйте рынки и торговую историю, настраивайте рабочее пространство, тестируйте и оптимизируйте советники.