Выходные данные: TotalBase.dat (бинарные данные траектории).
Выходные данные: TotalBase.dat (данные бинарной траектории).
Как же нам выполнить шаг 1, ведь у нас нет ранее обученных Encoder (Enc.nnw) и Actor (Act.nnw), поэтому мы не можем запустить Research.mq5, и у нас нет файла Signals\Signal1.csv, поэтому мы не можем запустить ResearchRealORL.mq5 тоже?
Ознакомьтесь с новой статьей: Нейронные сети в трейдинге: Модели пространства состояний.
Автор: Дмитрий Гизлык
Как я понимаю, в вашем конвейере на шаге 1 нам нужно запустить Research.mq5 или ResearchRealORL.mq5 с деталями, как показано ниже :
Выходные данные: TotalBase.dat (бинарные данные траектории).
Выходные данные: 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 вы можете подробнее прочитать в статье.
- www.mql5.com
В этот раз модератор исправил форматирование. Пожалуйста, в будущем оформляйте код правильно; сообщения с неправильно оформленным кодом могут быть удалены.
в 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; } }
Кто-нибудь, дайте мне знать, прав я или нет.
в trajectory.mqh, слой 2-4 (около строки 604) в папке mamba
я думаю, что есть проблема:
переместил new CLayerDescription() внутрь цикла Mamba, так что каждый из 3 слоев получает свое собственное распределение
вот как я бы написал это.
Кто-нибудь, дайте мне знать, прав я или нет.
Добрый день,Seyedsoroush Abtahiforooshani.
В данном случае мы не формируем слой, а делаем лишь описание его архитектуры. А программа уже по данному описанию генерирует нейронные слои. В исходном варианте, когда descr = new CLayerDescription() формируется вне массива, мы формируем один объект descr для одинокавых слоев и передаем его указатель нужное количество раз. Объект descr при формировании слоев модели не изменяется. Поэтому формируются одинаковые по архитектуре нейронные слои, но каждый из них получает свои параметры.
Когда Вы перенесли формирование объекта в цикл, для создаваемой модели ничего не меняется. Мы лишь создаем дополнительные дубликаты descr, которые будут удаляться сразу после формирования модели. Это добавляет немного дополнительных операций и потребление памяти при формировании модели. На работе модели влияние не оказывается.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Нейросети в трейдинге: Модели пространства состояний:
В основе большого количества рассмотренных нами ранее моделей лежит архитектура Transformer. Однако они могут быть неэффективны при работе с длинными последовательностями. И в этой статье я предлагаю познакомиться с альтернативным направлением прогнозирования временных рядов на основе моделей пространства состояний.
В последнее время широкое распространение получила парадигма адаптации к новым задачам больших моделей, предварительно обученных на больших массивах произвольных исходных данных из широкого спектра областей, таких как текст, изображения, аудио, временные ряды и прочее.
Хотя эта концепция не зависит от конкретного выбора архитектуры, но большинство моделей основано на одно типе архитектуры — Transformer и его основном слое Self-Attention. Эффективность Self-Attention объясняется способностью плотно направлять информацию в контекстное окно, что позволяет моделировать сложные данные. Однако это свойство имеет принципиальные недостатки — невозможность моделировать что-либо за пределами конечного окна, и квадратичное масштабирование по отношению к длине окна.
В задачах моделирования последовательностей альтернативным решением может стать использование структурированных моделей последовательностей в пространстве состояний (Space Sequence Models — SSM). Эти модели можно интерпретировать как комбинацию рекуррентных нейронных сетей (RNN) и сверточных нейронных сетей (CNN). Данный класс моделей может быть очень эффективно вычислен с линейным или почти линейным масштабированием длины последовательности. Кроме того, у него есть принципиальные механизмы моделирования дальних зависимостей в определенных модальностях данных.
Один из алгоритмов, который позволяет использовать модели пространства состояний для прогнозирования временных рядов, был предложен в статье "Mamba: Linear-Time Sequence Modeling with Selective State Spaces". В ней представлен новый класс выборочных моделей пространства состояний.
Автор: Dmitriy Gizlyk