Нейросети в трейдинге: От рыночного шума к устойчивому торговому плану (Окончание)
Введение
Торговая система редко страдает от одного большого неверного решения. На практике её чаще разрушает цепочка мелких колебаний. Сегодня модель видит продолжение движения. Через несколько баров начинает сомневаться. Затем закрывает позицию, снова входит, переворачивается, возвращается к прежнему сценарию и постепенно теряет не только деньги, но и внутреннюю последовательность. Для трейдера это знакомая картина. На графике ещё нет полноценного разворота, но алгоритм уже нервно реагирует на каждый новый бар. В итоге рабочая идея не успевает раскрыться, а случайный рыночный шум получает слишком большой вес.
Именно с этой проблемы мы начали адаптацию фреймворка MomAD к задачам финансового рынка. В авторской работе речь шла об автономном вождении, где модель должна строить траекторию автомобиля не рывками, а с учётом уже выбранного направления. В трейдинге эта идея оказалась не менее практичной. Здесь тоже нельзя каждый раз начинать анализ с чистого листа. Если система открыла позицию или выбрала торговую гипотезу, она должна понимать, продолжает ли рынок подтверждать этот сценарий или уже появились серьёзные основания его пересмотреть.
Важно сразу отделить эту логику от привычного понимания Momentum. Мы говорим не о классическом ценовом импульсе и не о попытке упрямо удерживать сделку только потому, что раньше был выбран определённый вариант. В данной интерпретации Momentum — это инерция торгового плана. Модель должна помнить не только историю котировок, но и собственную историю решений. Такой подход ближе к работе опытного трейдера: он не отменяет план из-за одной шумовой свечи, но и не держится за него, когда структура рынка действительно изменилась.
В первой статье мы рассмотрели эту проблему на концептуальном уровне. Было показано, почему одиночный прогноз следующего бара недостаточен для устойчивой торговой системы. Рынок движется не по учебнику. В нём есть ложные пробои, расширение спреда, краткосрочные всплески волатильности, новостные выбросы и обычная микроструктурная дрожь. Если модель слишком сильно зависит от последнего состояния, она начинает не сопровождать сценарий, а догонять рынок. Внешне это может выглядеть как высокая чувствительность. Но в реальной торговле такая чувствительность быстро превращается в серию лишних действий.
Во второй статье мы перешли от идеи к реализации основных компонентов. Сначала был собран модуль Topological Trajectory Matching. Его задача — сравнивать текущие сценарии-кандидаты с ранее выбранным планом и находить тот вариант, который лучше сохраняет преемственность. Для этого используется логика расстояния Хаусдорфа. Она важна тем, что оценивает не только среднюю близость сценариев, но и наиболее опасные расхождения между ними. В торговле это особенно полезно. Два прогноза могут быть похожи на большей части горизонта, но резко расходиться в зоне, где система должна решить: удерживать позицию, закрываться или разворачиваться.
Затем был реализован Momentum Planning Interactor. Этот блок решает более тонкую задачу. TTM выбирает наиболее согласованный сценарий, но сам по себе такой выбор ещё не гарантирует правильного решения. История может устареть. Текущий рынок может содержать новую важную информацию. Поэтому MPI уточняет выбранный сценарий через память предыдущих решений и актуальное рыночное состояние. В результате модель получает не просто лучший кандидат из текущего набора, а латентное представление торгового плана, проверенное через историю и через текущий контекст.
Теперь мы подошли к третьему этапу. Отдельные блоки уже описаны и реализованы, но практическая ценность архитектуры проявляется только в составе единой модели. Трейдеру недостаточно знать, что есть модуль согласования сценариев и механизм внимания к истории. Главный вопрос таков: сможет ли система обучиться на реальных рыночных данных и показать более осмысленное поведение при тестировании? Не в абстрактной схеме. Не на искусственном примере. А на исторических котировках, где рынок не делает скидок на сложность архитектуры.
В этой статье мы соберём объект верхнего уровня MomAD и свяжем ранее реализованные компоненты в единый рабочий контур. Модель должна получить рыночное состояние, сформировать набор возможных сценариев, согласовать их с историей принятого плана, уточнить выбранный вариант через MPI и передать результат дальше — к прогнозированию, оценке качества сценария и принятию торгового решения. Мы переходим от отдельных механизмов к полноценной архитектуре, которую уже можно обучать и проверять в прикладном режиме.
В этой работе мы будем смотреть на MomAD как на механизм сопровождения торговой гипотезы. Его задача — сделать поведение модели более последовательным. Не медленным. Не инертным любой ценой. А именно последовательным. Система должна сохранять рабочий план, пока рынок его не опроверг, и менять решение тогда, когда для этого появляются достаточные основания. Для практикующего трейдера это, пожалуй, один из самых важных критериев качества алгоритма. Хорошая модель должна не только входить в рынок. Она должна понимать, что делать с уже выбранным сценарием.

Объект верхнего уровня
После рассмотрения отдельных блоков можно переходить к объекту верхнего уровня. И здесь сразу нужно уточнить важный момент. В этой работе мы не строим MomAD в чистом виде. Прямое копирование авторской архитектуры в задачи трейдинга было бы слишком формальным решением. Исходный фреймворк создавался для планирования движения в физической среде, где траектория агента связана с дорогой, соседними объектами и ограничениями движения. На финансовом рынке ситуация другая. Здесь нет дороги в привычном смысле. Нет гарантированной геометрии пространства. Есть поток цен, объёмов, волатильности, рыночных режимов и уже принятых торговых решений.
Поэтому наша задача глубже простого переноса архитектуры. Мы берём из MomAD не внешнюю форму, а саму идею последовательного планирования. Модель должна не просто построить очередной прогноз, а связать его с ранее выбранным сценарием. Она должна понимать, насколько новое состояние рынка подтверждает старую торговую гипотезу, насколько оно её ослабляет и не пора ли заменить прежний план новым. Именно эта логика и становится центральной частью объекта верхнего уровня.
При этом базой для нашей реализации остаётся рассмотренный ранее фреймворк UncAD. Его роль в общей архитектуре можно описать достаточно просто. UncAD отвечает за восприятие рыночной среды и работу с неопределённостью. Он помогает модели не относиться к каждому состоянию рынка как к полностью однозначному сигналу. Это особенно важно в трейдинге. Один и тот же фрагмент графика может быть началом тренда, ложным пробоем, фазой накопления или обычным шумовым выбросом. Если модель не учитывает неопределённость, она начинает принимать слишком уверенные решения там, где рынок ещё не дал твёрдого ответа.
MomAD добавляет к этой базе другой слой логики. Он работает не только с текущим состоянием, но и с последовательностью действий. Иными словами, UncAD помогает понять, где сейчас находится рынок и насколько надёжна эта оценка. MomAD помогает понять, что делать с уже выбранным планом. Продолжать его, скорректировать, ослабить или полностью заменить. Для торговой системы это принципиальное различие. Прогноз сам по себе ещё не является торговым поведением. Торговое поведение появляется там, где прогноз связан с предыдущими решениями, позицией, риском и допустимой степенью изменения сценария.
Именно поэтому объект верхнего уровня объединяет две идеи. Первая — оценка текущего рыночного состояния с учётом неопределённости. Вторая — согласование нового сценария с историей уже принятых решений. В результате модель не реагирует на каждый новый бар изолированно. Она рассматривает его как часть развивающейся рыночной ситуации. Это ближе к тому, как работает практикующий трейдер. Он не меняет торговый план из-за одного тика. Но и не игнорирует рынок, если структура движения действительно изменилась. Хорошая система должна уметь отличать шум от факта.
На уровне архитектуры это означает, что модель должна принять текущее рыночное состояние, сформировать его латентное представление, оценить неопределённость и затем передать это представление в блоки последовательного планирования. Здесь в работу включается логика MomAD. Сначала модель сравнивает возможные сценарии с ранее выбранным планом. Затем уточняет выбранный вариант через взаимодействие с текущим состоянием рынка. После этого результат используется уже не как абстрактный вектор признаков, а как обновлённое представление торговой гипотезы.
Такой подход позволяет избежать двух крайностей. Первая — чрезмерная чувствительность, когда модель постоянно перестраивается и превращает рыночный шум в поток ложных команд. Вторая — чрезмерная инерция, когда система слишком долго держится за старый сценарий и пропускает момент изменения рыночной ситуации. Интеграция MomAD в UncAD как раз и направлена на поиск баланса между этими состояниями. Нам нужна не упрямая и не нервная модель, а система, которая умеет сопровождать торговую идею до тех пор, пока она остаётся обоснованной.
Поэтому объект верхнего уровня в нашей реализации можно рассматривать как координирующий контур. Он не заменяет внутренние компоненты UncAD и не превращает MomAD в самостоятельную торговую систему. Его задача — связать восприятие рынка, оценку неопределённости, память предыдущего плана и формирование нового решения в единый рабочий контур. На входе у нас есть рыночные данные. На выходе — уточнённое состояние, которое уже учитывает не только текущую картину, но и логику последовательности действий.
Это важный шаг от модели прогнозирования к модели поведения. Обычная нейросеть может дать оценку следующего движения. Более сложная модель может построить несколько возможных сценариев. Но торговый робот должен сделать нечто большее. Он должен принять решение в контексте уже открытых гипотез. Именно здесь появляется практический смысл интеграции MomAD и UncAD. Мы не просто улучшаем прогноз. Мы пытаемся сделать действия модели более связными, устойчивыми и проверяемыми на исторических данных.
Далее рассмотрим реализацию объекта верхнего уровня, который объединяет ранее созданные компоненты в единую архитектуру. Он станет тем самым каркасом, через который будут проходить рыночные данные, латентные состояния, оценки неопределённости и уточнённые торговые сценарии. После этого мы сможем перейти к обучению модели и проверить, насколько предложенная логика работает уже не в теории, а на реальной истории котировок.
Следующий шаг — реализация класса CNeuronMomAD. Он наследуется от ранее созданного CNeuronUncAD и является объектом верхнего уровня архитектуры. На первый взгляд такое наследование выглядит вполне стандартным техническим решением, однако его роль значительно шире простого повторного использования кода. Фактически именно в этом классе происходит объединение двух разных подходов к анализу рынка. От UncAD мы получаем механизм формирования латентных представлений и оценки неопределённости, а от MomAD — инструменты последовательного планирования и сопровождения сценариев во времени.
class CNeuronMomAD : public CNeuronUncAD { protected: CNeuronMomADMPI cMPI; bool bTauELinked; //--- virtual bool TauEForward(void) override; virtual bool TauEGradients(void) override; virtual bool updateInputWeights(CNeuronBaseOCL *NeuronOCL) override; bool LinkTauEToMPI(void); bool DetachTauEFromMPI(void); public: CNeuronMomAD(void) : bTauELinked(false) {}; ~CNeuronMomAD(void) { DetachTauEFromMPI(); }; //--- virtual bool Init(uint numOutputs, uint myIndex, COpenCLMy *open_cl, uint &dimensions[], uint units_s, uint heads, uint stack_size, uint quantiles, uint embed_size, uint candidates, uint topK, uint latent_count, ENUM_OPTIMIZATION optimization_type, uint batch) override; //--- virtual int Type(void) override const { return defNeuronMomAD; } //--- methods for working with files virtual bool Save(int const file_handle) override; virtual bool Load(int const file_handle) override; //--- virtual void SetOpenCL(COpenCLMy *obj) override; virtual void TrainMode(bool flag) override; virtual bool WeightsUpdate(CNeuronBaseOCL *source, float tau) override; virtual bool Clear(void) override; };
Для практикующего трейдера это различие особенно важно. Большинство моделей машинного обучения работают по принципу "получили новые данные — выдали новый прогноз". Такой подход хорошо подходит для исследовательских задач, но в реальной торговле часто приводит к нестабильному поведению. Рынок постоянно генерирует шум, локальные импульсы и краткосрочные отклонения. Если модель реагирует на каждое изменение одинаково сильно, торговая система начинает бесконечно менять своё мнение о рынке. В результате растёт количество ложных входов, увеличиваются транзакционные издержки и ухудшается итоговая доходность стратегии.
Архитектура CNeuronMomAD решает эту проблему иначе. Она рассматривает текущее состояние рынка не изолированно, а в контексте уже сформированной торговой гипотезы. Если ранее модель пришла к выводу о развитии восходящего сценария, то новое наблюдение сначала оценивается с точки зрения того, насколько оно подтверждает этот сценарий или противоречит ему. Благодаря этому система получает определённую устойчивость и перестаёт воспринимать каждый новый бар как повод полностью пересмотреть торговый план.
Ключевым новым элементом класса является объект CNeuronMomADMPI cMPI, реализующий модуль взаимодействия между текущим состоянием модели и ранее сформированными сценариями. Именно через него обеспечивается согласование новых рыночных наблюдений с уже существующей торговой гипотезой. Если проводить аналогию с работой трейдера, то данный модуль выполняет роль механизма проверки гипотез. Трейдер редко принимает решение исключительно по последней свече. Обычно он сравнивает новое движение с общей структурой рынка, оценивает сохранение тренда, наличие подтверждений или признаков разворота. MPI реализует похожую логику на уровне нейросетевой архитектуры.
Практическая ценность такого подхода становится особенно заметной в периоды повышенной волатильности. Например, после выхода важных макроэкономических новостей рынок может совершать резкие движения в обе стороны. Простая модель часто начинает хаотично переключаться между противоположными прогнозами. Модуль MPI позволяет учитывать историю уже сформированных сценариев и принимать решение о корректировке плана только тогда, когда накоплено достаточно подтверждений изменения рыночной структуры.
Поскольку архитектура расширяет базовый класс, может показаться, что для интеграции нужно переопределять прямой проход, градиенты и обновление весов. Однако в нашем случае такой необходимости нет. Общая логика работы модели сохраняется без изменений, а модификации носят локальный характер. Фактически мы заменяем только метод уточнения эго-траектории CNeuronMomAD::TauEForward(), в котором после формирования представления взаимодействий выполняется дополнительное уточнение через блок MPI с использованием выходов модуля неопределённости.
bool CNeuronMomAD::TauEForward(void) { if(!bTauELinked && !LinkTauEToMPI()) ReturnFalse; if(!cTauEValues.FeedForward(cMapInteraction.AsObject())) ReturnFalse; if(!cMPI.FeedForward(cTauEValues.AsObject(), cMUE.getOutput())) ReturnFalse; //--- return true; }
Такой подход позволяет встроить новый механизм планирования в существующий вычислительный граф с минимальными изменениями. Остальные этапы прямого и обратного распространения не затрагиваются. В результате базовая архитектура сохраняет свою структуру, а новые возможности появляются за счёт точечной корректировки алгоритма уточнения сценария.
Для трейдинга это имеет вполне конкретное значение. Если система регулярно открывает позиции в направлении тренда, а затем преждевременно выходит из них из-за краткосрочных коррекций, то проблема заключается не столько в прогнозировании, сколько в отсутствии устойчивого механизма сопровождения сценария. Интеграция компонентов MomAD в вычислительный граф позволяет учитывать подобные эффекты уже на этапе обучения модели.
Конструктор и деструктор класса обеспечивают корректное создание и освобождение внутренних связей, а метод Init() выполняет инициализацию всех компонентов архитектуры.
bool CNeuronMomAD::Init(uint numOutputs, uint myIndex, COpenCLMy *open_cl, uint &dimensions[], uint units_s, uint heads, uint stack_size, uint quantiles, uint embed_size, uint candidates, uint topK, uint latent_count, ENUM_OPTIMIZATION optimization_type, uint batch) { if(!DetachTauEFromMPI()) ReturnFalse; if(!CNeuronUncAD::Init(numOutputs, myIndex, open_cl, dimensions, units_s, heads, stack_size, quantiles, embed_size, candidates, topK, latent_count, optimization_type, batch)) ReturnFalse;
В начале процедуры объект отсоединяет ранее использовавшийся блок TauE от механизма MPI через вызов DetachTauEFromMPI(), после чего запускается базовая инициализация, унаследованная от CNeuronUncAD. На этом этапе создаются и настраиваются все основные компоненты модели: размеры эмбеддингов, количество квантилей, число сценариев, параметры латентного пространства и другие характеристики архитектуры.
После успешной инициализации базовой части вычисляются параметры, необходимые для работы блока MPI. Размер латентного пространства определяется количеством нейронов в слое cTauEWeighted, размер рыночного представления задаётся через iEmbedSize, а число рыночных признаков рассчитывается как произведение количества агентных блоков на число используемых квантильных представлений.
uint mpi_latent = (uint)cTauEWeighted.Neurons(); uint mpi_market_dim = iEmbedSize; uint mpi_market_units = iAgentUnits * (2 * iQuantiles + 1); if(mpi_latent == 0 || mpi_market_dim == 0 || mpi_market_units == 0 || heads == 0 || (mpi_latent % heads) != 0) ReturnFalse;
Дополнительно выполняется серия проверок корректности параметров: размеры не должны быть нулевыми, а размер латентного пространства должен делиться на количество голов внимания без остатка.
Если все условия выполнены, создаётся объект cMPI, которому передаются вычисленные размеры и параметры архитектуры.
if(!cMPI.Init(0, 0, OpenCL, mpi_latent, iCandidates, mpi_market_dim, mpi_market_units, 5, topK, heads, mpi_latent / heads, optimization, iBatch)) ReturnFalse;
Именно здесь происходит подключение механизма последовательного планирования MomAD к уже сформированному представлению рынка из UncAD.
После успешной инициализации блок TauE повторно связывается с MPI через вызов LinkTauEToMPI(), и вычислительный контур становится единым.
return LinkTauEToMPI();
}
Метод инициализации не просто задаёт конфигурацию модели, а обеспечивает корректную интеграцию компонентов UncAD и MomAD в рамках общей архитектуры торговой системы.
Таким образом, CNeuronMomAD становится координирующим объектом системы. Через него проходят рыночные данные, латентные состояния, оценки неопределённости и результаты последовательного планирования. Именно здесь объединяются основные информационные потоки архитектуры. На вход поступает текущее состояние рынка. Далее оно преобразуется в латентное представление, оценивается с точки зрения неопределённости, сопоставляется с ранее сформированными сценариями и только после этого используется для формирования обновлённой торговой гипотезы.
Именно этот класс объединяет возможности UncAD и MomAD в единую архитектуру, которая далее будет использоваться для обучения и тестирования на исторических рыночных данных. Если рассматривать систему с позиции трейдера, то CNeuronMomAD можно воспринимать как центральный контур принятия решений. Он не просто отвечает на вопрос, что происходит на рынке сейчас. Его задача значительно шире — определить, насколько текущее движение согласуется с уже выбранным сценарием и требуется ли изменение торгового плана. Благодаря этому модель делает шаг от обычного прогнозирования к более зрелому поведению, ориентированному на сопровождение торговых идей и управление их жизненным циклом.
Тестирование
После сборки объекта верхнего уровня мы переходим к самому чувствительному этапу работы — обучению и тестированию модели. До этого момента архитектура существовала как набор связанных механизмов. Теперь наступает следующий этап. Отдельные блоки включены в общий вычислительный контур и должны показать, как работают в составе полноценной торговой модели. Это важная граница. Пока мы описываем TTM и MPI отдельно, можно сосредоточиться на логике расстояний, буферов, стеков памяти и операций кросс-внимания. Но практический вопрос трейдера звучит проще: помогает ли эта конструкция сделать поведение торговой системы более последовательным? Умеет ли модель сопровождать торговую гипотезу, а не каждый раз начинать анализ с чистого листа?
Именно здесь начинается главная проверка всей идеи. Можно построить сложную архитектуру: связать несколько потоков признаков, добавить память решений и механизм выбора согласованного сценария. На уровне схемы это выглядит убедительно. Но рынок не оценивает красоту архитектуры. Он проверяет её иначе: через новые данные, смену волатильности, ложные пробои, затяжные откаты, резкие импульсы и обычный рыночный шум. Если модель не выдерживает этой проверки, все внутренние механизмы остаются только аккуратной инженерной конструкцией.
Работа с моделью организована в три этапа. Первый этап — офлайн-обучение на исторических данных EURUSD H1 за 2025 год. Здесь модель получает базовую подготовку и формирует первичное представление о структуре рынка. Второй этап — онлайн-режим обучения в тестере стратегий MetaTrader 5 на том же участке 2025 года. На этом шаге мы переводим модель из условно лабораторного режима в последовательный режим обработки данных. Третий этап — онлайн-тестирование в тестере стратегий на новом участке, охватывающем первые четыре месяца 2026 года. Именно здесь проверяется, насколько полученная модель сохраняет практическую ценность за пределами периода обучения.
Такое разделение важно. Офлайн-обучение позволяет быстрее сформировать базовые параметры модели. На этом этапе данные могут использоваться как обучающий архив, в котором модель постепенно находит повторяющиеся структуры, связи между признаками и характерные рыночные состояния. Она изучает, как цена ведёт себя в трендовых движениях, как выглядит переход к консолидации, где чаще возникают резкие импульсы и какие сочетания признаков могут предшествовать смене сценария. Это стартовая подготовка. Без неё модель входит в рынок почти вслепую.
Но офлайн-обучение не полностью соответствует условиям реальной торговли. В реальном времени данные не поступают готовым массивом, который можно свободно просматривать и многократно перемешивать. Бары появляются последовательно. Решение принимается здесь и сейчас. Следующий участок ещё неизвестен. Поэтому после первичной подготовки мы используем второй этап — онлайн-обучение в тестере стратегий на том же 2025 годе. Этот этап нужен для адаптации модели к самой механике последовательной работы.
В онлайн-режиме модель проходит историю шаг за шагом. На каждом баре она получает только ту информацию, которая была бы доступна в реальной торговле. Затем формирует внутреннее состояние, сопоставляет новый сценарий с уже выбранной торговой гипотезой, уточняет параметры и переходит к следующему шагу. Такой формат лучше соответствует задаче, ради которой мы интегрировали логику MomAD. Нам важно не просто обучить модель распознавать рыночные фрагменты. Нам нужно, чтобы она научилась сопровождать сценарий во времени.
Именно на втором этапе особенно хорошо проявляется смысл модулей TTM и MPI. TTM помогает сопоставлять текущие сценарии-кандидаты с ранее выбранной линией поведения. MPI уточняет выбранный вариант через историю решений и текущий рыночный контекст. В офлайн-обучении эти механизмы получают базовую настройку. В онлайн-режиме они начинают работать ближе к реальному торговому процессу. Модель уже не просто видит отдельные состояния рынка. Она учится проходить их последовательно, сохраняя связь между предыдущими и текущими решениями.
Здесь важно не путать онлайн-обучение с финальным тестированием. На втором этапе мы всё ещё работаем с 2025 годом. Этот период уже использовался для первичной подготовки, поэтому он не может считаться независимой проверкой. Его задача другая. Он помогает модели перейти от статического обучения к режиму пошаговой адаптации. По сути, это настройка поведения модели в условиях, близких к реальной эксплуатации. Мы проверяем не итоговую обобщающую способность, а способность вычислительного контура корректно работать в последовательном режиме.
Только после этого мы переходим к третьему этапу — онлайн-тестированию на данных января–апреля 2026 года. Это уже новый рыночный участок, который не использовался для основной подготовки модели. Здесь модель должна показать, насколько её внутренние представления и механизм сопровождения сценариев переносятся на следующий период. Для практикующего трейдера это главный вопрос. Модель может хорошо выглядеть на обучении, но потерять устойчивость сразу после смены участка рынка. Именно поэтому тестирование на данных 2026 года становится основной проверкой прикладной ценности архитектуры.
Последовательный проход в тестере стратегий делает эту проверку более строгой. Модель не видит будущего. Она получает данные в порядке их появления и должна принимать решения только на основании уже сформированной истории. Если рынок продолжает знакомый режим, система должна использовать накопленный опыт. Если структура движения меняется, модель должна постепенно скорректировать торговую гипотезу. При этом она не должна превращаться ни в нервный механизм, который меняет мнение после каждого бара, ни в слишком инертную систему, которая держится за устаревший сценарий.

Итоговый результат оказался положительным. За период тестирования система получила 385.57 USD чистой прибыли, что соответствует приросту депозита примерно на 38.6%. Валовая прибыль составила 2897.72 USD, валовой убыток — 2512.15 USD. Profit Factor равен 1.15. Это не выдающееся значение, но оно показывает, что модель смогла сохранить преимущество над случайным чередованием прибыльных и убыточных сделок. Expected Payoff составил 3.89 USD на сделку. Иными словами, каждая сделка в среднем давала небольшой положительный вклад в итоговый результат.
Всего за период тестирования было совершено 99 сделок. Прибыльными оказались 53 сделки, что составляет 53.54% от общего количества. Убыточных сделок было 46, или 46.46%. Баланс между покупками и продажами также выглядит достаточно ровным: 54 короткие позиции и 45 длинных. При этом короткие сделки закрывались с прибылью в 57.41% случаев, а длинные — в 48.89%. Это говорит о том, что в данном участке рынка модель немного увереннее отрабатывала нисходящие сценарии. Однако разрыв не выглядит критическим, и система не сводилась к работе только в одну сторону.
Средняя прибыльная сделка составила 54.67 USD, а средняя убыточная — 54.61 USD. Это важная деталь. Средний размер выигрыша и проигрыша почти одинаков. Следовательно, положительный результат был получен не за счёт редких крупных выигрышей, полностью перекрывающих поток мелких убытков, а за счёт небольшого перевеса частоты прибыльных сделок и общей структуры входов. Крупнейшая прибыльная сделка принесла 230.25 USD, а крупнейшая убыточная сделка составила 361.16 USD. Последнее значение требует внимания. Оно показывает, что отдельные неблагоприятные эпизоды всё ещё способны заметно ударить по счёту.
График баланса и эквити подтверждает этот вывод. Система не демонстрирует гладкого восходящего движения. Напротив, результат формировался через несколько выраженных фаз. В начале января наблюдалась просадка, после которой модель быстро восстановилась и вышла в прибыльную область. Затем в январе и феврале баланс двигался неровно, с чередованием роста и откатов. Наиболее сложный участок пришёлся на конец февраля и начало марта. Здесь эквити резко снизилась, что хорошо видно на графике. Однако после этого система смогла восстановиться и во второй половине марта перешла к сильному росту. Максимальные значения были достигнуты в начале апреля, после чего снова последовал резкий откат и новая попытка восстановления.
Такое поведение хорошо показывает характер модели. Она не является консервативной системой с низкой волатильностью капитала. Её преимущество проявляется через способность восстанавливаться после неблагоприятных рыночных фаз. Но цена этого преимущества — высокая просадка. Максимальная просадка по балансу составила 658.85 USD, или 45.99%. Максимальная просадка по эквити достигла 762.94 USD, или 50.70%. Для практической эксплуатации это серьёзный уровень риска. Полученная прибыль не должна скрывать тот факт, что внутри теста модель проходила через глубокие просадки, которые для реального счёта потребовали бы более жёсткого управления объёмом позиции.
Recovery Factor равен 0.51. Это подтверждает, что соотношение прибыли к максимальной просадке пока остаётся слабым. Иными словами, модель заработала, но сделала это при высокой нагрузке на капитал. Sharpe Ratio составил 0.88. Значение положительное, но не позволяет говорить о спокойной и устойчивой кривой доходности. LR Correlation равна 0.51, что также указывает на умеренную направленность роста, а не на ровное линейное увеличение баланса. Рынок давал модели возможности, но путь к итоговой прибыли был неровным.
Главный вывод по тесту можно сформулировать так: архитектура показала жизнеспособность, но пока не показала достаточной устойчивости риска. Модель умеет находить прибыльные участки, восстанавливаться после сложных фаз и удерживать положительный итог на новом периоде. Однако просадка остаётся слишком высокой, а кривая эквити слишком неровной. Следовательно, дальнейшая работа должна быть направлена не столько на усложнение архитектуры, сколько на стабилизацию поведения модели: ограничение потерь в неблагоприятных режимах, более аккуратное управление объёмом и снижение нагрузки на депозит во время рыночной неопределённости.
Заключение
Мы завершили практическую сборку архитектуры MomAD в рамках нашей торговой модели. В предыдущих частях были рассмотрены сама идея последовательного планирования и реализованы ключевые компоненты, отвечающие за сопоставление текущих сценариев с ранее выбранным планом. Теперь эти элементы объединены в объект верхнего уровня, который связывает рыночное состояние, память торговой гипотезы и механизм уточнения сценария в единый вычислительный контур. Это важный шаг: модель перестаёт быть набором отдельных модулей и превращается в рабочий контур, который можно обучать, проверять и развивать дальше.
Отдельное значение имеет многоэтапная схема подготовки модели. Сначала было выполнено офлайн-обучение на данных 2025 года. Затем тот же период использовался для онлайн-обучения в тестере стратегий, где модель переходила к последовательной обработке рынка. После этого система была проверена на новом участке истории — за январь–апрель 2026 года. Такой порядок позволил отделить базовое обучение от финальной проверки и посмотреть, насколько архитектура сохраняет работоспособность за пределами обучающей выборки.
Результаты тестирования получились содержательными, но не однозначно комфортными. Модель завершила проверку с положительным финансовым результатом и показала способность восстанавливаться после сложных фаз рынка. Это подтверждает практическую жизнеспособность реализованного подхода. Но вместе с тем отчёт выявил и слабое место: просадка остаётся слишком высокой, а кривая эквити — достаточно неровной. Поэтому текущую версию нельзя рассматривать как завершённое торговое решение. Скорее, это рабочий исследовательский прототип, который уже умеет находить рыночные возможности, но ещё требует более строгого контроля риска.
Ссылки
Программы, используемые в статье
| # | Имя | Тип | Описание |
|---|---|---|---|
| 1 | Study.mq5 | Советник | Советник офлайн-обучения моделей |
| 2 | StudyOnline.mq5 | Советник | Советник онлайн-обучения моделей |
| 3 | Test.mq5 | Советник | Советник для тестирования модели |
| 4 | Trajectory.mqh | Библиотека класса | Структура описания состояния системы и архитектуры моделей |
| 5 | NeuroNet.mqh | Библиотека класса | Библиотека классов для создания нейронной сети |
| 6 | NeuroNet.cl | Библиотека | Библиотека кода OpenCL-программы |
Проект представлен на forge.mql5.io/dng.
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Данная статья написана пользователем сайта и отражает его личную точку зрения. Компания MetaQuotes Ltd не несет ответственности за достоверность представленной информации, а также за возможные последствия использования описанных решений, стратегий или рекомендаций.
От начального до среднего уровня: Песочница и MetaTrader
Создание профессиональной торговой системы на базе Heikin Ashi (Часть 2): Разработка советника
Рыночные секреты Ларри Уильямса (Часть 2): Автоматизация торговой системы на основе рыночной структуры
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования