Обсуждение статьи "Нейросети в трейдинге: Долговременная память торговых сценариев (Окончание)"

 

Опубликована статья Нейросети в трейдинге: Долговременная память торговых сценариев (Окончание):

В статье отдельные компоненты VLADriver-RAG объединяются в единую торговую систему с долговременной памятью завершённых сценариев. Показана последовательность подготовки рыночного представления, обучения Актёра и Критика, формирования базовой памяти и последующей адаптации модели с использованием найденного опыта. Практическая часть позволяет проследить весь цикл до проверки полученной системы на EURUSD H1 вне обучающей выборки.

В предыдущих статьях мы по частям собрали долговременную память для торговой модели. Сначала научились сохранять завершённый сценарий вместе с фактически выполненным действием и результатом. Затем организовали двухуровневое хранилище и поиск похожего опыта. После этого подключили найденные сценарии к MPI-политике, чтобы память могла корректировать предпочтения Актёра, но не подменяла оценку текущего рынка.

Теперь задача меняется. Отдельные классы уже работают, но трейдеру этого мало. Нужна законченная система, которую можно обучить, запустить в тестере и получить обычный торговый отчёт: сделки, прибыль, просадку и кривую баланса. На этом этапе особенно важно правильно состыковать предыдущие решения. Если энкодер, Актёр и модуль памяти работают в разных пространствах признаков, поиск теряет смысл. Если в память записывать каждое намерение модели, она быстро превращается в архив несостоявшихся решений.

Поэтому здесь рассматривается не добавление новых нейронных блоков, а согласование уже построенных компонентов. Сначала соберём полную модель VLADriver-RAG и проследим фактические потоки данных. Затем разберём порядок обучения: сначала формируется устойчивое представление рынка, потом в этом пространстве обучается торговая политика и строится Base Memory, и только после этого система переходит к последовательной адаптации.

Долговременная память торговых сценариев

Автор: Dmitriy Gizlyk

 
Дмитрий, приветствую!

У меня не получается запустить модель на обучение. Файл Study пишет ошибки:

VLADriverRAGStEnc.nnw
Error at CNet::Load line 10966
Error of load StateEncoder: 5004

Подумал, что может быть сразу нужно запустить файл StudyStateEncoder, но опять ошибки:

VLADriverRAGStEnc.nnw
Error at CNet::Load line 10966
Create new model
OpenCL not found, error code=4014
Error at COpenCLMy::Initialize line 203
Error at CNet::OpenCLInit line 16767
Error at CNet::Create line 10445

Модель учится только с помощью видеокарты, а на CPU? 

Если не сложно, можно сделать инструкцию, что в каком порядке запускать. А еще лучше простой пример скрипта для создания и обучения модели на синтетических данных, как в scikit. Мне, например, интересно именно на синтетике посмотреть модель, сравнить ее с базовым mlp и т.д. 
 

Дмитрий, здравствуйте!

Ошибка возникает уже на стадии создания энкодера в функции StateEncoder.Create(encoder) - строка 44 файла StudyStateEncoder.mq5 глубже тпока не смотрел.

С уважением,

Андрей

 
Andrey Kotrin #:

Дмитрий, здравствуйте!

Ошибка возникает уже на стадии создания энкодера в функции StateEncoder.Create(encoder) - строка 44 файла StudyStateEncoder.mq5 глубже тпока не смотрел.

С уважением,

Андрей

Попросил AI Assistant райти и исправить проблему. Вот результат:

Таблица изменений

Единственное различие между версиями — блок определения константы  StackSize .

Строка (база) Строка (изм.) Было (базовая версия) Стало (изменённая версия)
64 ( #define Quantiles 8  ниже) 64 #define StackSize 24*NScenarios #define StackSize (24*NScenarios < 10*Quantiles ? 10*Quantiles : 24*NScenarios) //AIAssistant_VLADriverRAG_Modification_17082026
— 65 (новая) (отсутствовала) /*AIAssistant_VLADriverRAG_Modification_17082026: old variant
— 66 (новая) (отсутствовала) #define StackSize 24*NScenarios  (старый вариант, закомментирован)
— 67 (новая) (отсутствовала) */

Пояснение изменения

В изменённой версии (от 17.08.2026) строка определения  StackSize  была заменена с простого

#define StackSize 24*NScenarios

на условное выражение с защитой от переполнения/слишком малого размера:

#define StackSize (24*NScenarios < 10*Quantiles ? 10*Quantiles : 24*NScenarios)

Смысл: теперь берётся максимальное из значений  24*NScenarios  и  10*Quantiles . Поскольку  NScenarios = 3  и  Quantiles = 8 :

  • 24*NScenarios = 24*3 = 72
  • 10*Quantiles = 10*8 = 80

Так как  72 < 80 , новое значение  StackSize = 80  (вместо прежнего  72 ). Это изменение с пометкой  AIAssistant_VLADriverRAG_Modification_17082026  (дата правки 17.08.2026). Старый вариант сохранён в комментарии для справки.

 
Andrey Kotrin #:

Попросил AI Assistant райти и исправить проблему. Вот результат:

Таблица изменений

Единственное различие между версиями — блок определения константы  StackSize .

Строка (база) Строка (изм.) Было (базовая версия) Стало (изменённая версия)
64 ( #define Quantiles 8  ниже) 64 #define StackSize 24*NScenarios #define StackSize (24*NScenarios < 10*Quantiles ? 10*Quantiles : 24*NScenarios) //AIAssistant_VLADriverRAG_Modification_17082026
— 65 (новая) (отсутствовала) /*AIAssistant_VLADriverRAG_Modification_17082026: old variant
— 66 (новая) (отсутствовала) #define StackSize 24*NScenarios  (старый вариант, закомментирован)
— 67 (новая) (отсутствовала) */

Пояснение изменения

В изменённой версии (от 17.08.2026) строка определения  StackSize  была заменена с простого

#define StackSize 24*NScenarios

на условное выражение с защитой от переполнения/слишком малого размера:

Смысл: теперь берётся максимальное из значений  24*NScenarios  и  10*Quantiles . Поскольку  NScenarios = 3  и  Quantiles = 8 :

  • 24*NScenarios = 24*3 = 72
  • 10*Quantiles = 10*8 = 80

Так как  72 < 80 , новое значение  StackSize = 80  (вместо прежнего  72 ). Это изменение с пометкой  AIAssistant_VLADriverRAG_Modification_17082026  (дата правки 17.08.2026). Старый вариант сохранён в комментарии для справки.

Исправленная версия работает - пока проверил этапы энкодера и оффлайн обучения.
Файлы:
Trajectory.mqh  46 kb
 
Andrey Kotrin #:

Дмитрий, здравствуйте!

Ошибка возникает уже на стадии создания энкодера в функции StateEncoder.Create(encoder) - строка 44 файла StudyStateEncoder.mq5 глубже тпока не смотрел.

С уважением,

Андрей

Добрый день,

Файлы в статье и проекте  NN_in_Trading - MQL5 Algo Forge обновлены.

С уважением,
Дмитрий.

NN_in_Trading
NN_in_Trading
  • dng
  • forge.mql5.io
This repository contains the source code for the article series “Neural Networks in Trading”.
 
Evgeniy Chernish #:
Дмитрий, приветствую!

У меня не получается запустить модель на обучение. Файл Study пишет ошибки:

VLADriverRAGStEnc.nnw
Error at CNet::Load line 10966
Error of load StateEncoder: 5004

Подумал, что может быть сразу нужно запустить файл StudyStateEncoder, но опять ошибки:

VLADriverRAGStEnc.nnw
Error at CNet::Load line 10966
Create new model
OpenCL not found, error code=4014
Error at COpenCLMy::Initialize line 203
Error at CNet::OpenCLInit line 16767
Error at CNet::Create line 10445

Модель учится только с помощью видеокарты, а на CPU? 

Если не сложно, можно сделать инструкцию, что в каком порядке запускать. А еще лучше простой пример скрипта для создания и обучения модели на синтетических данных, как в scikit. Мне, например, интересно именно на синтетике посмотреть модель, сравнить ее с базовым mlp и т.д. 

Добрый день, Евгений.

Данная модель работает только на OpenCL. Ошибка "OpenCL not found, error code=4014" не позволит работать приложенным файлам.

С уважением,
Дмитрий.

 
Dmitriy Gizlyk #:

Добрый день,

Файлы в статье и проекте  NN_in_Trading - MQL5 Algo Forge обновлены.

С уважением,
Дмитрий.

Спасибо - всё работает!