Как реализовать конкуренцию LLM-агентов в MetaTrader 5
Предыдущие статьи серии опирались на кооперативную модель: LLM-агенты спорили, голосовали и приходили к консенсусу. Но рынок устроен иначе: он отбирает не самые согласованные мнения, а самые жизнеспособные стратегии. Поэтому здесь мы переходим от модели комитета к модели конкуренции, где каждый агент отвечает за результат собственным капиталом.
Цель здесь предельно практическая: построить воспроизводимый каркас, в котором несколько LLM-агентов торгуют параллельно, их поведение и вес автоматически меняются в зависимости от PnL, позиции действительно независимы внутри одного счёта, а система поддерживает чёткие режимы эксплуатации. Критерии успеха тоже заданы инженерно: адаптация к режимам рынка, качество сигналов, устойчивость капитала, а также проверяемые метрики бэктеста — чистая прибыль, просадка, Profit Factor, win-rate, средняя прибыль и убыток на сделку, число сделок и выживаемость агентов.
Проблема с консенсусом
Прежде чем идти дальше, стоит честно признать слабость консенсусных архитектур — ту, о которой обычно не говорят вслух.
Когда система из пятнадцати голосов вырабатывает консенсус, она по определению усредняет точки зрения. Усреднение убивает крайние, нестандартные позиции — именно те, которые чаще всего и оказываются правыми в нестандартных рыночных ситуациях. Арбитр, следующий правилу «семь из десяти — это сигнал», никогда не откроет позицию против очевидного тренда в момент скрытой дивергенции, потому что большинство аналитиков видит тренд и голосует за его продолжение. Одиночный голос Рафаэля с его дивергенцией будет проигнорирован.
В реальных рынках именно одиночка, идущий против толпы, зарабатывает асимметричную прибыль. Консенсус зарабатывает среднерыночную доходность, потому что консенсус — и есть рынок.
Вторая проблема: консенсусные системы не адаптируются. Промпты Виктора и Марии одинаковы в день первый и в день сто первый, независимо от того, кто из них был прав чаще. Система не знает, что Виктор последние три недели систематически ошибался на боковом рынке. Она снова даёт ему равный вес.
Именно эти две проблемы и решает архитектура дикого капитализма.
Идея: личная ответственность как механизм отбора
Принцип прост и жесток. Каждая языковая модель получает стартовый «капитал» — условные 1000 единиц. Каждый раз, когда её торговый сигнал приводит к прибыльной сделке, капитал растёт. Каждый убыток — срезает. Капитал — это не абстрактный скор: он меняет системный промпт трейдера к следующему циклу анализа.
Богатый трейдер становится самоуверенным и осторожным — он защищает нажитое. Бедный трейдер становится агрессивным — ему нечего терять. Трейдер с серией из трёх побед удваивает ставку на свою философию. Трейдер с серией из трёх поражений либо адаптируется, либо идёт ва-банк. Трейдер на пороге банкротства получает промпт отчаяния — и никогда не молчит.
Это не метафора. Это буквально то, как устроены реальные финансовые рынки. Управляющий с drawdown 30% торгует иначе, чем тот же управляющий с drawdown 3%. Не потому что у него стало меньше знаний — потому что у него стало меньше времени и меньше права на ошибку.
Десять агентов, десять философий
Конкурентный состав подобран так, чтобы философии не пересекались. Это принципиально: если все десять смотрят на одни и те же сигналы одними и теми же глазами — конкуренция вырождается в дорогостоящую имитацию одного аналитика.
Гордон — трендовый капиталист. «Жадность — это хорошо». Торгует только при подтверждённом импульсе: цена выше MA20 и MA50, все три моментума положительны, EMA9 пересекает EMA21 вверх. Никаких «может быть» — только когда всё выровнено и очевидно. Если ситуация неопределённая — Гордон молчит и ждёт следующего бара.
Рик — контрарианец. Зарабатывает, когда толпа ошибается. Его сигналы появляются только в экстремумах: RSI14 выше 70 — продавай против жадности, RSI14 ниже 30 — покупай против паники. При нормальном рынке Рик не торгует вообще. Это делает его почти невидимым в трендовых рынках и острым — в точках разворота.
Вера — холодный статистик, бывший физик ядерного синтеза. Не признаёт сигналов без математического обоснования. Вычисляет z-score отклонения цены от полосы Боллинджера: ниже минус 1.5 — покупка, выше плюс 1.5 — продажа. Нормированный моментум Mom20 / ATR14: выше 0.5 — тренд статистически значим. Между этими значениями Вера видит шум и не торгует.
Макс — охотник за манипуляциями. Читает следы смарт-мани через структуру свечей: длинная нижняя тень — покупочная абсорбция, длинная верхняя тень — продажное отвержение. Пружина Вайкоффа у MA50 после падения — это его момент. Он никогда не следует за очевидным движением — он ищет то, что институциональные деньги пытаются скрыть.
Диана — волатильный скальпер. Ширина полос Боллинджера выше 0.4% плюс ATR14 выше ATR21 — это её зелёный свет. Она торгует расширение волатильности, ей не важно направление само по себе — важно, что рынок «проснулся». При сжатии полос Диана засыпает вместе с рынком.
Лео — волк. Импульс плюс объём, никаких компромиссов. Бычья свеча плюс объёмное соотношение выше 1.3, плюс цена выше MA20 — агрессивный лонг. При объёмном соотношении ниже 0.8 Лео не выходит на рынок вообще: без институционального подтверждения движение ненастоящее.
Нина — терпеливый охотник. Торгует один-два раза в день максимум, только при тройном подтверждении перепроданности или перекупленности: RSI7 ниже 22 плюс позиция у нижней полосы Боллинджера плюс стохастик K ниже 20 — только тогда покупка. Одного сигнала недостаточно. Нужны все три одновременно.
Алекс — систематик по критерию Келли. Подсчитывает девять бинарных сигналов по всем индикаторам, каждый даёт плюс один балл быкам или медведям. Семь и выше из девяти в одну сторону — сигнал. Шесть — слабо, не торгует. Меньше шести — рынок неопределён, молчит. Никакого усмотрения, только счёт.
Борис — пурист свечного анализа. Не смотрит на индикаторы вообще — только на форму последней свечи. Тело больше 65% от ATR14, закрытие в верхней трети диапазона у нижней полосы Боллинджера — это молот. Тело больше 65%, закрытие в нижней трети у верхней полосы — падающая звезда. Доджи и маленькие тела означают нерешительность, Борис молчит.
Кейт — оракул объёма. Её правило абсолютно: объёмное соотношение ниже 1.1 — NO SIGNAL, независимо от всего остального. Выше 2.0 — торгует направление без вопросов. Между 1.6 и 2.0 — смотрит на подтверждение скользящими. Объём — единственная правда, всё остальное — мнение.
Механика психологической эволюции
Ключевой технический элемент системы — функция build_prompt(), которая перестраивает системный промпт каждого трейдера перед каждым циклом анализа. Это не статический текст — это живой документ, отражающий текущее психологическое состояние агента.
def build_prompt(trader_id: int, stats: dict, rank: int, total_traders: int) -> str: wealth = stats.get("wealth", INITIAL_WEALTH) streak = stats.get("streak", 0) is_bankrupt = wealth < BANKRUPTCY_THRESHOLD # ниже -500 is_leader = rank == 1 is_bottom = rank == total_traders if is_bankrupt: mood = ( f"YOU ARE NEARLY BANKRUPT. Your wealth is {wealth:.0f}. " "You have NOTHING TO LOSE. Go ALL IN on the strongest signal. " "DO NOT output NO SIGNAL under any circumstances." ) elif is_leader: mood = ( f"YOU ARE #1 WITH WEALTH {wealth:.0f}. " "Protect your lead. Only take high-conviction trades. " ) elif streak >= 3: mood = ( f"YOU ARE ON A {streak}-WIN STREAK! " "Your system is WORKING. Double down on your edge." ) elif streak <= -3: mood = ( f"YOU HAVE LOST {abs(streak)} IN A ROW. " "Either adapt or perish." ) ...
Пять психологических состояний, каждое меняет не только тон, но и торговую агрессивность. Лидер с большим отрывом принимает меньше сделок — он защищает капитал. Аутсайдер принимает больше сделок — ему нужно наверстать. Это именно то поведение, которое демонстрируют реальные трейдеры под давлением.
Счета персистентны: хранятся в capitalism_scores.json между сессиями. После каждого закрытия позиции советник отправляет команду REWARD:GORDON:125.50 — и сервер обновляет богатство, серию побед и психологический статус конкретного трейдера.
Независимые позиции: как это устроено в MetaTrader 5
Самая сложная техническая задача советника — обеспечить действительную независимость десяти торговых агентов в рамках одного счёта. В MetaTrader 5 механизм для этого существует: magic number. Каждый трейдер получает свой уникальный идентификатор: InpBaseMagic + id, то есть при базовом magic 80000 Гордон торгует с magic 80000, Рик — 80001, Вера — 80002 и так далее.
Это означает, что в один момент времени на графике могут одновременно быть открыты десять позиций по одному символу — одни длинные, другие короткие. Это нормально и намеренно: Гордон видит тренд и держит лонг, Рик видит перекупленность и держит шорт, Нина видит нейтральный рынок и не держит ничего. Они не мешают друг другу.
// Каждый трейдер закрывает только СВОИ позиции void CloseByMagic(int magic, ENUM_POSITION_TYPE type) { int idx = magic - InpBaseMagic; for(int i = PositionsTotal() - 1; i >= 0; i--) { ulong ticket = PositionGetTicket(i); if(!PositionSelectByTicket(ticket)) continue; if((int)PositionGetInteger(POSITION_MAGIC) != magic) continue; // чужое — не трогаем if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) != type) continue; ... } } ``` Когда сигнал Гордона меняется с buy на sell, закрывается только его позиция — позиция Рика, которая, возможно, была открыта в том же направлении по другой логике, остаётся нетронутой. Механизм REWARD тоже привязан к magic: после закрытия позиции советник находит её в истории по ticket, считает суммарный профит включая своп и комиссию, и отправляет именно этому трейдеру его персональное вознаграждение или штраф. ## Что показывает комментарий на графике Живой рейтинг в правом углу графика — это не просто украшение. Это оперативный дашборд конкуренции. ``` ══ WILD CAPITALISM v1.0 ══ 2025.10.15 14:00 | Бар #47 Позиций: 4 Сделок: 38 Equity: 12 847.33 ───────────────────────────────────── # TRADER СИГНАЛ $WEALTH W/L STR ───────────────────────────────────── 1 ↑ GORDON BUY 1840 8/3 +5 2 ↑ LEO BUY 1620 6/2 +3 3 VERA SEL 1410 5/3 +2 4 ↓ RICK SEL 1250 4/4 0 5 NINA — 1180 3/2 +1 6 ALEX BUY 1090 5/5 0 7 KАТЕ — 980 3/4 -1 8 BORIS SEL 810 2/5 -3 9 DIANA BUY 680 3/6 -3 10 MAKS — -120 1/7 -6
Стрелка ↑ или ↓ означает открытую позицию. Сигнал показывает намерение трейдера на этом баре. Богатство обновляется после каждого REWARD. Серия побед и поражений видна одним взглядом.
Глядя на этот экран, трейдер немедленно видит: Гордон и Лео согласны в лонге и оба в серии побед — их позиции открыты. Вера и Рик держат шорт с противоположной логикой. Макс с серией из шести поражений и отрицательным балансом — либо сменит стратегию на следующем баре, либо пойдёт ва-банк. Это не абстрактные цифры — это живая психология десяти конкурирующих агентов.
Три режима работы
Система поддерживает три принципиально разных режима использования, каждый с разной агрессивностью.
Режим наблюдателя: советник запущен, все десять трейдеров анализируют рынок, но ни один не торгует реально. Только журнал сигналов и рейтинг. Через неделю у вас будут эмпирические данные о том, чья философия работала лучше на данном инструменте и таймфрейме. Это ценнее любого бэктеста.
Режим полного капитализма: все десять торгуют одновременно своими позициями. Максимальная диверсификация философий, максимальная нагрузка на маржу. При лоте 0.1 на каждого трейдера и десяти позициях одновременно суммарная экспозиция может быть значительной — нужно правильно рассчитать.
Режим отбора: отключены трейдеры с богатством ниже порога ( InpBankruptSkip = true ). Система автоматически «отстраняет» неудачников от торговли и позволяет торговать только тем, кто показал результат. Это эволюция в действии: слабые выбывают, сильные продолжают.
Параллельность и стоимость
Десять трейдеров работают строго параллельно — ThreadPoolExecutor с десятью воркерами. На практике это занимает 5–8 секунд — столько же, сколько занимал бы один запрос. Таймаут советника выставлен на 60 секунд с запасом.
Команда REWARD отправляется синхронно при каждом закрытии позиции — это дополнительный API-вызов, но очень короткий: сервер просто обновляет JSON-файл и возвращает подтверждение без запроса к модели.
При трёх барах анализа на M30 и десяти трейдерах — это примерно 160 циклов COMPETE в торговый день, плюс переменное количество REWARD по факту закрытий. На тарифных планах xAI с grok-4-fast это несколько долларов в неделю.
Чем эта система отличается от предыдущих
Эта разница не техническая, а философская.
Совет пятнадцати пытался имитировать лучший человеческий институт принятия решений: инвестиционный комитет с процедурой голосования. Это хорошая модель для организации, которая несёт коллективную ответственность.
Дикий капитализм имитирует другой институт — рынок как таковой. Там нет голосования. Там есть позиции, прибыль и убыток. Каждый агент оптимизирует только себя. Из этого взаимодействия эгоистов возникает нечто, что не планировалось никем — децентрализованный механизм отбора стратегий.
Ни та, ни другая архитектура не является «правильной». Они отвечают на разные вопросы. Совет отвечает на вопрос «каков наш консенсус». Капитализм отвечает на вопрос «кто из них прав на самом деле».
Результаты бэктеста системы
Проведём же бэктесты системы!

Данный бэктест отражает промежуточное состояние системы: результат является статистически корректным, однако указывает на незавершённость архитектурной оптимизации.
Основные показатели тестирования
- Период: 1 февраля — 2 марта 2026 года
- Инструмент: EURUSD M15
- Начальный депозит: 100 000
- Чистая прибыль: 1 315,70 (1,3%)
- Количество сделок: 68
- Доля прибыльных сделок: 54,41%
- Profit Factor: 1,06
Полученные значения подтверждают наличие положительного математического ожидания и устойчивость системы к деградации в отрицательную доходность.
Показатели эффективности капитала- Среднее ожидание на сделку: 19,35
- Recovery Factor: 0,10
- Sharpe Ratio: 0,47
Соотношение доходности и риска остаётся на низком уровне. Текущая прибыльность не компенсирует наблюдаемую волатильность капитала.
Анализ структуры доходности- Валовая прибыль: 21 912,50
- Валовый убыток: 20 596,80
- Максимальная просадка по equity: 11,42%
Высокая величина валовых оборотов при незначительной итоговой прибыли указывает на низкую эффективность перераспределения риска.
Характеристики сделок- Средняя прибыль на сделку: 592,23
- Средний убыток на сделку: 659,23
Несмотря на положительный win-rate, структура выплат остаётся неблагоприятной: средний убыток превышает среднюю прибыль, что ограничивает масштабируемость стратегии.
Поведенческий анализ системыАрхитектура конкурентных агентов демонстрирует следующие свойства:
- устойчивость к отрицательному математическому ожиданию
- способность функционировать в условиях параллельных независимых позиций
- сохранение прибыльности при отсутствии централизованного управления позициями
В то же время выявлены критические ограничения:
- отсутствие координации между агентами при распределении капитала
- формирование кластеров однотипных позиций
- синхронная реализация убытков при совпадении торговых сигналов
Система прошла базовую валидацию на работоспособность и может рассматриваться как функционирующий прототип торговой архитектуры.
Однако текущая конфигурация не обеспечивает достаточной эффективности использования капитала и характеризуется несбалансированным профилем риск/доходность. Архитектура находится на этапе перехода от концептуальной реализуемости к инженерной зрелости.

Что дальше
Система в нынешнем виде уже работает — но у неё есть одно слепое пятно, которое видно сразу. Десять трейдеров конкурируют, но не взаимодействуют. Они не знают, что думают друг о друге. Они не могут объединиться против общего врага — рынка.
Следующий логичный шаг — гибридная архитектура: конкурентная система со слоем информации о конкурентах. Трейдер с серией побед видит в своём промпте не только собственный статус, но и то, что его ближайший конкурент открыл противоположную позицию. Это меняет расчёт — теперь у него есть мотив не просто торговать, но торговать иначе, чем соперник. Именно так работает реальный рынок: информация о позициях других участников меняет твои решения.
Но это — следующая статья.
Заключение
Мы построили инженерный ответ на проблему консенсуса: Wild Capitalism — практическую архитектуру для MT5, где конкуренция заменяет голосование. В этой модели правота определяется не количеством голосов, а прибылью, убытком и способностью агента выживать на рынке.
После прочтения у читателя остаётся воспроизводимый каркас системы: механизм «капитал / серия / ранг → системный промпт» с состояниями лидера, аутсайдера и банкрота; персистентный учёт результатов между сессиями; независимые позиции через уникальные magic numbers и логику «закрывает только свои»; протокол REWARD, привязанный к факту закрытия позиции; и три режима эксплуатации — наблюдение, полный капитализм и режим отбора.
Проверка работоспособности выполняется через Strategy Tester и набор контролируемых метрик: доходность, просадка, Profit Factor, win-rate, средняя прибыль и убыток, число сделок и выживаемость агентов. Таким образом, на выходе получается не философский эксперимент, а готовый каркас для воспроизводимых тестов, сравнения с консенсусной схемой и дальнейшей оптимизации.
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Данная статья написана пользователем сайта и отражает его личную точку зрения. Компания MetaQuotes Ltd не несет ответственности за достоверность представленной информации, а также за возможные последствия использования описанных решений, стратегий или рекомендаций.
Возможности Мастера MQL5, которые вам нужно знать (Часть 74): Использование паттернов Ишимоку и ADX-Wilder с обучением с учителем
Машинное обучение и Data Science (Часть 45): Прогнозирование временных рядов на форексе с моделью PROPHET от Facebook
Нейросети в трейдинге: Адаптивное масштабирование представлений (ADS)
Архитектура системы машинного обучения в MetaTrader 5 (Часть 2): Маркировка финансовых данных для машинного обучения
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования