Обсуждение статьи "Нейросети — это просто (Часть 29): Алгоритм актер-критик с преимуществом (Advantage actor-critic)"
Hello,
Nice work! I have been actively working on reinforcement learning based trading algorithms, and I like your articles on the subject.
I have a question regarding the results. I can see that you are just showing the trading performance of the first 10 days (2022-09-01 till 2022-09-10). Was the EA losing after the 10th day?
/Rasoul
Здравствуйте Дмитрий
Большое спасибо за исчерпывающую и очень поучительную серию статей. Действительно хорошо сделано.
Один вопрос: после загрузки всего кода из вложения вашей последней статьи (#29), я не могу скомпилировать из-за отсутствия определения класса CBufferDouble, которое, как я предполагаю, должно быть внутри
NeuroNet_DNG\NeuroNet.mqh
но его нет.
Я что-то упустил?
Спасибо!
С наилучшими пожеланиями
Паоло
Здравствуйте Дмитрий
Большое спасибо за исчерпывающую и очень поучительную серию статей. Действительно хорошо сделано.
Один вопрос: после загрузки всего кода из вложения вашей последней статьи (#29), я не могу скомпилировать из-за отсутствия определения класса CBufferDouble, который, как я полагаю, должен находиться внутри
NeuroNet_DNG\NeuroNet.mqh
но его нет.
Я что-то упустил?
Спасибо!
С наилучшими пожеланиями
Паоло
Привет, в последней статье я изменил CBufferDouble на CBufferFloat. Это помогает запускать библиотеку на GPU без типа double.
Привет, Дмитрий,
Отличная серия, я большой поклонник этой работы. Я также попробовал скомпилировать советник Reinforce и увидел, что ему также нужен аунто-кодер (конечно же), поэтому я добавил последнюю версию (из поста 22) VAE.mqh, однако по какой-то причине он не может найти определения Normal.mqh:
Я уверен, что сделал что-то не так, надеюсь, вы сможете помочь.
Будьте здоровы!
Привет, Дмитрий,
Отличная серия, я большой поклонник этой работы. Я также попробовал скомпилировать советник Reinforce и увидел, что ему также нужен аунто-кодер (конечно же), поэтому я добавил последнюю версию (из поста 22) VAE.mqh, однако по какой-то причине он не может найти определения Normal.mqh:
Я уверен, что сделал что-то не так, надеюсь, вы сможете помочь.
Будьте здоровы!
Здравствуйте, загрузите последнюю версию в этой статье https://www.mql5.com/ru/articles/11804.
- www.mql5.com
Здравствуйте, загрузите последнюю версию этой статьи https://www.mql5.com/ru/articles/11804.
Спасибо Дмитрию за быстрый ответ, помощь и драгоценное время, однако я все еще получаю тот же результат.
Казалось бы, FQF-обучение вызывает FQF.mqh

Который, в свою очередь, вызывает NeuroNet...

И, конечно же, последний вызывает VAE.mqh.

И единственная версия, которую я смог найти, это версия из поста 22...
Использование этой версии приводит к тому, что VAE не находит ссылки на функции Normal.mqh.

Может быть, дело в моей версии редактора?

Спасибо.
...По какой-то причине либа Normal недоступна в VAE.mqh, если ее вызвать из NeuroNet, я не знаю, почему (я пробовал на 2 разных сборках)...
Поэтому я решил эту проблему, добавив вызов Normal непосредственно в VAE и Neuronet, но мне пришлось избавиться от математического пространства в FQF:

странно... но это сработало:

Инициализация завершилась неудачей из-за отсутствия файла EURUSD_PERIOD_H1_REINFORCE.nnw при выполнении следующих операторов
if(!Actor.Load(ACTOR + ".nnw", dError, temp1, temp2, dtStudied, false) ||
!Critic.Load(CRITIC + ".nnw", dError, temp1, temp2, dtStudied, false))
возвращается INIT_FAILED;
Как решить эту проблему? Спасибо.
Другое решение для предупреждения "... скрытый вызов метода ..."
В строке 327 файла Actor_Critic.mq5:
Я получаю предупреждение "устаревшее поведение, скрытый вызов метода будет отключен в будущей версии компилятора MQL":

Это относится к вызову "Maximum(0, 3)", который должен быть изменен на:

Таким образом, в данном случае необходимо добавить "CArrayFloat::", чтобы указать означенный метод. Метод Maximum() перезаписывается классом CBufferFloat, но этот метод не имеет параметров.
Хотя вызов должен быть однозначным, так как у него два параметра, компилятор хочет, чтобы мы были сознательными ;-)
Инициализация завершилась неудачей из-за отсутствия файла EURUSD_PERIOD_H1_REINFORCE.nnw при выполнении следующих операторов
if(!Actor.Load(ACTOR + ".nnw", dError, temp1, temp2, dtStudied, false) ||
!Critic.Load(CRITIC + ".nnw", dError, temp1, temp2, dtStudied, false))
return INIT_FAILED;
Как решить эту проблему? Спасибо.
В этих строках загружается структура сети, которая должна быть обучена. Перед запуском этого эксперта необходимо построить сеть и сохранить ее в именованном файле. Вы можете использовать, например, инструмент построения модели в статье № 23
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования

Опубликована статья Нейросети — это просто (Часть 29): Алгоритм актер-критик с преимуществом (Advantage actor-critic):
В предыдущих статьях данной серии мы познакомились с 2-мя алгоритмами обучения с подкреплением. Каждый из них обладает своими достоинствами и недостатками. Как часто бывает в таких случаях, появляется идея совместить оба метода в некий алгоритм, который бы вобрал в себя лучшее из двух. И тем самым компенсировать недостатки каждого из них. О таком методе мы и поговорим в этой статье.
В качестве преимущества дообучения моделей из предыдущих статей можно отнести тот факт, что для проверки результатов их обучения мы можем использовать тестовые советники из предыдущей статьи. Этим я и воспользовался. После обучения модели я взял модель дообученной политики и запустил в тестере стратегий советник "REINFORCE-test.mq5" с использованием упомянутой модели. Алгоритм его построения был описан в предыдущей статье. А с полным его кодом можно познакомиться во вложении.
Ниже приведен график баланса советника в процессе тестирования. Следует отметить довольно равномерный рост баланса в процессе тестирования. Обратите внимание, что тестирование модели осуществлялась на данных, не входящих в обучающую выборку. Что говорит о состоятельности подхода для построения торговой системы. Для чистоты проверки работы именно модели все операции были совершены с фиксированным минимальным лотом без использования стоп-лосса и тейк-профита. Использование такого советника крайне не рекомендуется для реальной торговли, но хорошо демонстрирует работу обученной модели.
На ценовом графике можно заметить, как быстро закрываются убыточные сделки и немного выдерживаются прибыльные позиции. Здесь надо обратить внимание, что все операции совершаются при открытии новой свечи. При этом можно заметить несколько торговых операций совершенных практически на открытии разворотных (фрактальных) свечей.
Автор: Dmitriy Gizlyk