Закладываем скелет будущей программы MQL5
В предыдущем разделе мы поговорили о подготовительной работе и методах отбора показателей для анализа нейронной сетью. После проведения анализа мы определили корзину показателей для изучения нейронной сетью и глубину загружаемых исторических данных.
Теперь перейдем к практической части нашей книги. В ней мы рассмотрим различные алгоритмы и архитектуры нейронных сетей. Вы узнаете особенности построения и реализации полносвязного перцептрона, сверточных и рекуррентных нейронных сетей. Затем мы поговорим об особенностях и преимуществах механизмов внимания. И в заключение разберем архитектуру GPT, которая на момент написания книги демонстрирует наилучшие результаты в задачах обработки естественного языка.
По мере рассмотрения алгоритмов мы шаг за шагом создадим инструмент для проектирования и организации нейронных сетей средствами MQL5. Каждый рассматриваемый алгоритм будет реализован в трех вариантах:
- MQL5
- OpenCL
- Python
Мы построим и обучим нейронные сети с использованием всех изученных алгоритмов и на практике оценим достоинства и недостатки их использования для прогнозирования временных рядов. Обучать и тестировать построенные модели будем на реальных данных. И конечно, в процессе обучения мы обсудим нюансы этого процесса.
В книге будут продемонстрированы практические результаты использования нейронных сетей для решения задачи, определенной в предыдущих разделах, на реальных данных. В процессе тестирования мы сделаем сравнительный анализ различных реализаций и оценим практическую стоимость каждой реализации в решении поставленной задачи.
Начнем работу с проработки архитектуры нашего будущего инструмента. Вполне логично объединить всю нашу разработку в некий объект (класс), который будет легко подключаться к любой программе. Таким образом, мы сможем настроить всю работу нашей модели внутри этого класса.
При этом нужно предусмотреть возможность создавать модели различной архитектуры внутри нашей модели. Сама же архитектура модели будет задаваться в основной программе и передаваться в класс посредством созданных интерфейсов. Чтобы сделать этот процесс удобным и понятным в использовании, необходимо стандартизировать его. В вопросах стандартизации хорошо помогаю константы и именованные перечисления.