Обсуждение статьи "Нейросети в трейдинге: Модели пространства состояний"

 

Опубликована статья Нейросети в трейдинге: Модели пространства состояний:

В основе большого количества рассмотренных нами ранее моделей лежит архитектура Transformer. Однако они могут быть неэффективны при работе с длинными последовательностями. И в этой статье я предлагаю познакомиться с альтернативным направлением прогнозирования временных рядов на основе моделей пространства состояний.

В последнее время широкое распространение получила парадигма адаптации к новым задачам больших моделей, предварительно обученных на больших массивах произвольных исходных данных из широкого спектра областей, таких как текст, изображения, аудио, временные ряды и прочее.

Хотя эта концепция не зависит от конкретного выбора архитектуры, но большинство моделей основано на одно типе архитектуры — Transformer и его основном слое Self-Attention. Эффективность Self-Attention объясняется способностью плотно направлять информацию в контекстное окно, что позволяет моделировать сложные данные. Однако это свойство имеет принципиальные недостатки — невозможность моделировать что-либо за пределами конечного окна, и квадратичное масштабирование по отношению к длине окна.

В задачах моделирования последовательностей альтернативным решением может стать использование структурированных моделей последовательностей в пространстве состояний (Space Sequence Models — SSM). Эти модели можно интерпретировать как комбинацию рекуррентных нейронных сетей (RNN) и сверточных нейронных сетей (CNN). Данный класс моделей может быть очень эффективно вычислен с линейным или почти линейным масштабированием длины последовательности. Кроме того, у него есть принципиальные механизмы моделирования дальних зависимостей в определенных модальностях данных.

Один из алгоритмов, который позволяет использовать модели пространства состояний для прогнозирования временных рядов, был предложен в статье "Mamba: Linear-Time Sequence Modeling with Selective State Spaces". В ней представлен новый класс выборочных моделей пространства состояний.



Автор: Dmitriy Gizlyk

 
Как я понимаю, в вашем конвейере на шаге 1 нам нужно запустить Research.mq5 или ResearchRealORL.mq5 с деталями, как показано ниже :

если запустить Research.mq5:
Цель:
Прогнозирование торговых действий (покупка/продажа, объем, TP, SL) с помощью Encoder (Enc.nnw) и Actor (Act.nnw).
Соберите траектории этих действий и сохраните в TotalBase.dat.
Требования:
Требуется предварительно обученные кодировщик (Enc.nnw) и актор (Act.nnw).
Без этих двух файлов советник не сможет работать, поскольку они используются для кодирования состояния рынка и прогнозирования действий.

Выходные данные: TotalBase.dat (бинарные данные траектории).


если запустить ResearchRealORL.mq5:
Цель:
Моделирование торговли на основе реальной истории из файла Signals\Signal1.csv (вместо прогнозов из Actors).
Соберите траектории этих торгов и сохраните их в файле TotalBase.dat.
Требования:
Требуется файл Signals\Signal1.csv, содержащий историю сделок (время открытия/закрытия, тип, объем, цена и т. д.).
Не требуется кодировщик или актор, так как вместо предсказания используются данные из Signal1.csv.

Выходные данные: TotalBase.dat (данные бинарной траектории).


Как же нам выполнить шаг 1, ведь у нас нет ранее обученных Encoder (Enc.nnw) и Actor (Act.nnw), поэтому мы не можем запустить Research.mq5, и у нас нет файла Signals\Signal1.csv, поэтому мы не можем запустить ResearchRealORL.mq5 тоже?

 
trungns #:
Как я понимаю, в вашем конвейере на шаге 1 нам нужно запустить Research.mq5 или ResearchRealORL.mq5 с деталями, как показано ниже :

если запустить Research.mq5:
Цель:
Прогнозирование торговых действий (покупка/продажа, объем, TP, SL) с помощью Encoder (Enc.nnw) и Actor (Act.nnw).
Соберите траектории этих действий и сохраните в TotalBase.dat.
Требования:
Требуется предварительно обученные кодировщик (Enc.nnw) и актер (Act.nnw).
Без этих двух файлов советник не сможет работать, поскольку они используются для кодирования состояния рынка и прогнозирования действий.

Выходные данные: TotalBase.dat (бинарные данные траектории).


если запустить ResearchRealORL.mq5:
Цель:
Моделирование торговли на основе реальной истории из файла Signals\Signal1.csv (вместо прогнозов из Actors).
Соберите траектории этих торгов и сохраните их в файле TotalBase.dat.
Требования:
Требуется файл Signals\Signal1.csv, содержащий историю сделок (время открытия/закрытия, тип, объем, цена и т. д.).
Не требуется кодировщик или актор, так как вместо предсказаний используются данные из Signal1.csv.

Выходные данные: TotalBase.dat (данные бинарной траектории).


Как же нам выполнить шаг 1, ведь у нас нет ранее обученных Encoder (Enc.nnw) и Actor (Act.nnw), поэтому мы не можем запустить Research.mq5, и у нас нет файла Signals\Signal1.csv, поэтому мы не можем запустить ResearchRealORL.mq5 тоже?

Здравствуйте,

В Research.mq5 вы можете найти

//--- загрузить модели
   float temp;
//---
   if(!Encoder.Load(FileName + "Enc.nnw", temp, temp, temp, dtStudied, true))
     {
      CArrayObj *encoder = new CArrayObj();
      if(!CreateEncoderDescriptions(encoder))
        {
         delete encoder;
         return INIT_FAILED;
        }
      if(!Encoder.Create(encoder))
        {
         delete encoder;
         return INIT_FAILED;
        }
         delete encoder;
     }
   if(!Actor.Load(FileName + "Act.nnw", temp, temp, temp, dtStudied, true))
     {
      CArrayObj *actor = new CArrayObj();
      CArrayObj *critic = new CArrayObj();
      if(!CreateDescriptions(actor, critic))
        {
         delete actor;
         delete critic;
         return INIT_FAILED;
        }
      if(!Actor.Create(actor))
        {
         delete actor;
         delete critic;
         return INIT_FAILED;
        }
      delete actor;
      delete critic;
     }
//---

Таким образом, если у вас нет предварительно обученной модели, EA будет генерировать модели со случайными параметрами. И вы можете собирать данные по случайным траекториям.

О ResearchRealORL.mq5 вы можете подробнее прочитать в статье.

Neural networks made easy (Part 67): Using past experience to solve new tasks
Neural networks made easy (Part 67): Using past experience to solve new tasks
  • www.mql5.com
In this article, we continue discussing methods for collecting data into a training set. Obviously, the learning process requires constant interaction with the environment. However, situations can be different.
 
При вставке кода используйтекнопку CODE (Alt-S).

В этот раз модератор исправил форматирование. Пожалуйста, в будущем оформляйте код правильно; сообщения с неправильно оформленным кодом могут быть удалены.

в trajectory.mqh, слой 2-4 (около строки 604) в папке mamba

я думаю, что есть проблема:
переместил new CLayerDescription() внутрь цикла Mamba, так что каждый из 3 слоев получает свое собственное распределение
вот как я бы написал это.

   for(int i = 2; i <= 4; i++)
     {
      if(!(descr = new CLayerDescription()))
         return false;
      descr.type = defNeuronMambaOCL;
      descr.window = BarDescr;                                       //window
      descr.window_out = 4 * BarDescr;                               //Inside Dimension
      prev_count = (int)(descr.count = HistoryBars);                  //Units
      descr.batch = 1 e4;
      descr.activation = None;
      descr.optimization = ADAM;
      if(!encoder.Add(descr))
        {
         delete descr;
         return false;
        }
     }

Кто-нибудь, дайте мне знать, прав я или нет.

 
Seyedsoroush Abtahiforooshani #:

в trajectory.mqh, слой 2-4 (около строки 604) в папке mamba

я думаю, что есть проблема:
переместил new CLayerDescription() внутрь цикла Mamba, так что каждый из 3 слоев получает свое собственное распределение
вот как я бы написал это.

Кто-нибудь, дайте мне знать, прав я или нет.

Добрый день,Seyedsoroush Abtahiforooshani.

В данном случае мы не формируем слой, а делаем лишь описание его архитектуры. А программа уже по данному описанию генерирует нейронные слои. В исходном варианте, когда descr = new CLayerDescription() формируется вне массива, мы формируем один объект descr для одинокавых слоев и передаем его указатель нужное количество раз. Объект descr при формировании слоев модели не изменяется. Поэтому формируются одинаковые по архитектуре нейронные слои, но каждый из них получает свои параметры.
Когда Вы перенесли формирование объекта в цикл, для создаваемой модели ничего не меняется. Мы лишь создаем дополнительные дубликаты descr, которые будут удаляться сразу после формирования модели. Это добавляет немного дополнительных операций и потребление памяти при формировании модели. На работе модели влияние не оказывается.