Нейронные сети задач для прогнозирования курса на валютной бирже

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

Введение

1. Анализ предметной области и обзор используемых методов инструментальных средств

1.1 Постановка задачи прогнозирования

1.2 Краткое описание модели представления знаний

1.3 Описание инструментальных средств

1.4 Построение структуры семантической сети

2. Реализация экспертной системы

2.1 Описание структуры ПО

2.2 Основные решения по интерфейсам

2.3 Руководство пользователя ЭС

2.3.1 Условия работы системы

2.3.2 Установка системы

2.3.3 Руководство пользователя — эксперта

2.3.3 Руководство конечного пользователя

2.4 Описание контрольного примера. Результаты испытаний

Заключение

Список использованных источников

Приложения

Введение

автоматизированная нейронная сеть прогнозирование

Одна из наиболее динамично развивающихся областей современной теории интеллектуальных вычислений (computational intelligence) связана с построением и применением искусственных нейронных сетей.

Нейронные сети — это раздел искусственного интеллекта, в котором для обработки сигналов используются явления, аналогичные происходящим в нейронах живых существ.

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

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

Различные способы объединения нейронов между собой и организации их взаимодействия привели к созданию сетей разных структур.

Среди множества существующих структур сетей в качестве важнейших можно выделить:

многослойный персептрон,

радиальные сети,

сети с самоорганизацией в результате конкуренции нейронов,

сети с самоорганизацией корреляционного типа,

рекуррентные сети, в которых имеются сигналы обратной связи.

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

аппроксимация;

классификация;

распознавание образов;

прогнозирование;

идентификация;

оценивание;

ассоциативное управление.

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

1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ И ОБЗОР ИСПОЛЬЗУЕМЫХ МЕТОДОВ ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ

1.1 Постановка задачи прогнозирования

Из всего множества решаемых нейронными сетями задач для прогнозирования курса на валютной бирже являются наиболее важными являются:

— Классификационный прогноз направления движения курса;

— Прогноз цены;

— Выработка торговых сигналов покупки/продажи (buy/sell signals).

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

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

Предысторией ряда назовем набор элементов временного ряда, который учитывается для одного шага прогнозирования следующих элементов временного ряда. Одношаговое прогнозирование сводится к задачам отображения в случае, когда значение элементов предыстории могут определять лишь один дискретный отсчет выходных величин. Многошаговое прогнозирование характеризуется увеличением дискретных отсчетов выходной величины и, соответственно, увеличением времени, на который осуществляется прогноз (время опережения Топ). При многошаговом прогнозировании Топ=а*R, где R — количество шагов вычисления прогнозирования; а — шаг дискретизации выходного параметра (например, год, месяц, день, и т. п.).

По времени опережения различают виды прогнозов:

сглаживание, R= 0;

краткосрочный прогноз, R= 1 — 2;

середнесрочный прогноз, R= 3 — 7;

долгосрочный прогноз, R= 10 — 15.

Очевидно, что вид прогноза существенно влияет на выбор средств и методику его реализации.

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

Данные про поведение объекта, признаки которого связаны с течением времени, представлены как результаты наблюдений в равномерные отсчеты времени. Для моментов времени t=1, 2, …, n данные наблюдений приобретают вид временного ряда х (t1), х (t2), …, х (tn). Информация про значения временного ряда до момента n позволяет давать оценки параметров x (tn+1), x (n+2), …, x (n+m).

Для прогнозирования элементов временных рядов в линейной модели времени широко используют так называемый метод «временных окон».

Пусть временной ряд x (t) задан отсчетами процесса x (t1), x (t2),…, x (tі) в дискретные моменты времени t. Зададим ширину (количество дискретных отсчетов) входного временного окна m, ширину выходного окна р. Входное и выходное окна накладываются на данные ряда, начиная с первого элемента (рис. 1).

Рисунок 1 — Формирование множеств данных для однопараметрической задачи прогнозирования по методу «временных окон»

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

Значение ширины окон и шага смещения должны согласовываться с особенностями временного ряда, который обеспечивается путем проведения экспериментов. Пусть входное окно имеет ширину m, выходное окно р=1, шаг смещения s=1. Тогда сформированное множество значений для нашей задачи будет иметь вид, приведенный ниже:

Таблица 1.

Множество данных для прогнозирования методом «временных окон»

Входы

Выходы

x (t1)

x (t2)

x™

x (tm+1)

x (t2)

x (t3)

x (tm+1)

x (tm+2)

x (t3)

x (t4)

x (tm+2)

x (tm+3)

x (tі)

x (tі+1)

x (ti+m-1)

x (ti+m)

1.2 Краткое описание модели представления знаний

В данной курсовой работе для представления знаний используется семантическая сеть. Семантическая сеть — наиболее удобная и понятийная экспертам модель представления знаний. Под семантической сетью, как правило, подразумевают граф, узлы которого соответствуют понятиям или объектам. В данной работе используется частный вид семантической сети — а именно сеть нейронная.

Нейронные сети исключительно мощный метод моделирования, позволяющий воспроизводить чрезвычайно сложные зависимости. В частности, нейронные сети — нелинейны по своей природе. На протяжении многих лет линейное моделирование было основным методом моделирования в большинстве областей, поскольку для него хорошо разработаны процедуры оптимизации. В задачах, где линейная аппроксимация неудовлетворительна (а таких достаточно много), линейные модели работают плохо. Кроме того, нейронные сети справляются с «проклятием размерности», которое не позволяет моделировать линейные зависимости в случае большого числа переменных.

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

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

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

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

Системам, реализующим нейросетевые принципы обработки данных, свойственна способность к «запоминанию». Известно, что аппроксимирующую систему на базе искусственных нейронных сетей можно обучать довольно большим объемам информации, в которой система может выявлять зависимости, не поддающиеся обнаружению при использовании других методов обработки информации.

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

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

простой обрабатывающий элемент — нейрон;

очень большое число нейронов участвует в обработке информации;

один нейрон связан с большим числом других нейронов (глобальные связи);

изменяющиеся веса связей между нейронами;

массированная параллельность обработки информации.

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

Прототипом для создания нейрона послужил биологический нейрон головного мозга. Биологический нейрон имеет тело, совокупность отростков дендритов, по которым в нейрон поступают входные сигналы, и отросток аксон, передающий выходной сигнал нейрона другим клеткам. Точка соединения дендрита и аксона называется синапсом. Упрощенно функционирование нейрона можно представить следующим образом:

нейрон получает от дендритов набор (вектор) входных сигналов;

в теле нейрона оценивается суммарное значение входных сигналов. Однако входы нейрона неравнозначны. Каждый вход характеризуется некоторым весовым коэффициентом, определяющим важность поступающей по нему информации. Таким образом, нейрон не просто суммирует значения входных сигналов, а вычисляет скалярное произведение вектора входных сигналов и вектора весовых коэффициентов;

нейрон формирует выходной сигнал, интенсивность которого зависит от значения вычисленного скалярного произведения. Если оно не превышает некоторого заданного порога, то выходной сигнал не формируется вовсе — нейрон «не срабатывает»;

выходной сигнал поступает на аксон и передается дендритам других нейронов.

Поведение искусственной нейронной сети зависит от значения весовых параметров и от функции возбуждения нейронов.

Нейронная сеть представляет собой совокупность большого числа сравнительно простых элементов — нейронов, топология соединений которых зависит от типа сети. Чтобы создать нейронную сеть для решения какой-либо конкретной задачи, мы должны выбрать, каким образом следует соединять нейроны друг с другом, и соответствующим образом подобрать значения весовых параметров на этих связях. Может ли влиять один элемент на другой, зависит от установленных соединений. Вес соединения определяет силу влияния.

Простейшая сеть имеет структуру прямой передачи сигнала: сигналы проходят от входов через скрытые элементы и, в конце концов, приходят на выходные элементы. Такая структура имеет устойчивое поведение. Если же сеть рекуррентная (т.е. содержит связи, ведущие назад от более дальних к более ближним нейронам), то она может быть неустойчива и иметь очень сложную динамику поведения. Рекуррентные сети представляют большой интерес для исследователей в области нейронных сетей, однако, при решении практических задач, по крайней мере, до сих пор, наиболее полезными оказались структуры прямой передачи.

Нейроны регулярным образом организованы в слои. Входной слой служит просто для ввода значений входных переменных. Каждый из скрытых и выходных нейронов соединен со всеми элементами предыдущего слоя. При работе (использовании) сети во входные элементы подаются значения входных переменных, затем последовательно отрабатывают нейроны промежуточных и выходного слоев. Каждый из них вычисляет свое значение активации. Затем значение активации преобразуются с помощью функции активации, и в результате получается выход нейрона.

После того, как вся сеть отработает, выходные значения элементов выходного слоя принимаются за выход всей сети в целом.

Для решения задачи прогнозирования можно использовать многослойный персептрон, радиально-базисную сеть, обобщенно-регрессионную сеть и рекуррентные сети.

1.3 Описание инструментальных средств

В настоящее время существует огромное количество программных пакетов как для профессиональной работы с биржей (т.н. трейдинговые системы, DealStations), так и для нейросетевого моделирования, поэтому в целях экономии времени и концентрирования на задаче курсового проекта была произведенена работа в рамках существующих систем вместо самостоятельного написания новых. В качестве пакета нейросетевого моделирования был выбран модуль Neural Network Toolbox программного комплекса MatLab, а для работы с биржевыми котировками используется ПО MetaTrader 4. Платформа MetaTrader имеет в своем распоряжении встроенные средства визуализации, анализа и получения биржевых котировок (валютных пар) с серверов международного рынка Forex, а также реализует архив хранения котировок на весь период своей работы с различными равномерными отсчетами времени. MetaTrader 4 имеет в своем составе встроенный скриптовый язык с функцией вызова DLL, что позволяет реализовать произвольную логику работы механизма прогнозирования, а также возможность подключения пакета MatLab.

Для реализации графического интерфейса к радиально-базисной нейронной сети, была выбрана программа-оболочка, написанная в среде быстрой разработки приложений Borland Delphi 7.0 с использованием библиотеки компонентов Jedi Visual Component Library.

1.4 Построение структуры семантической сети

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

Поскольку решаемая задача имеет достаточно жесткие ограничения по времени своего исполнения (при прогнозировании, например, пятиминутных котировок), в качестве модели ИНС были сразу выбраны нерекуррентные сети прямого распространения, поскольку они хорошо обучаются за небольшие конечные промежутки времени; кроме того, существует несколько хорошо изученных и эффективных алгоритмов для обучения сетей такого типа.

Из всех типов нейронных сетей была выбрана радиально-базисная сеть вследствие некоторых особенностей биржевого предсказания, а именно представления биржевых котировок на определенный промежуток времени в виде т.н. «бара» или «японской свечи». Бар (японская свеча) представляет собой графическое изображение четырех основных параметров на промежуток времени: цены открытия («open»), цены закрытия («close»), максимального скачка цены вверх («high») и вниз («low»). При осуществлении классического анализа производится классификация типов этих свечей и на основании этого строится прогноз. Поэтому выбор радиально базисной сети для такого случая хорошо обусловлен и вполне естественен, поскольку она делает то же самое.

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

Поподробнее остановимся на сети RBF, поскольку она является не настолько элементарной по своей структуре, как многослойный персептрон.

Сети, использующие радиальные базисные функции, являются частным случаем двухслойной сети прямого распространения (см. рисунок 2). Каждый элемент скрытого слоя использует в качестве активационной функции радиальную базисную функцию типа гауссовой.

Рисунок 2 — Структура нейронной сети RBF

Радиальные нейронные сети относятся к той же категории сетей, обучаемых с учителем, что и многослойный персептрон. По сравнению с многослойными сетями, имеющими сигмоидальные функции активации, они отличаются некоторыми специфическими свойствами, обеспечивающими более простое отображение характеристик моделируемого процесса.

Радиальные функции по своей природе имеют локальный характер и принимают ненулевые значения только в зоне вокруг определенного центра. Это позволяет легко установить зависимость между параметрами базисных функций и физическим размещением обучающих данных в многомерном пространстве. Поэтому удается относительно просто найти удовлетворительные начальные условия процесса обучения с учителем.

Важное достоинство сетей — значительно упрощенный алгоритм обучения. При наличии одного скрытого слоя и тесной связи активности нейрона с соответствующей областью пространства обучающих данных точка начала обучения оказывается гораздо ближе оптимальному значению, чем это имеет место в многослойных сетях. Кроме того, можно отделить этап подбора параметров базисных функций от подбора значений весов сети (гибридный метод), что сильно упрощает и ускоряет процесс обучения. Для радиальных сетей, особенно основанных на ортогонализации, формирование оптимальной структуры сети оказывается естественным этапом процесса обучения, не требующим никаких дополнительных усилий.

Радиальная функция (функция ядра) центрируется в точке, которая определяется весовым вектором, связанным с нейроном. Как позиция, так и ширина функции ядра должна быть обучена по выборочным образцам. Обычно ядер гораздо меньше чем обучающих примеров. Каждый выходной элемент вычисляет линейную комбинацию этих радиальных базисных функций.

Структуру RBF-сети можно усилить путем применения масштабирования входных сигналов аналогичного сигмоидальной нейронной сети. Масштабирующая система вводит дополнительные степени свободы сети, что позволяет лучше приблизить выходной сигнал сети к ожидаемому значению функции. Коэффициенты масштабирования входных сигналов представляют собой группу подбираемых параметров. За счет увеличения количества подбираемых параметров удовлетворительная точность аппроксимации может быть достигнута при меньшем числе нейронов. Структура HRBF сети представлена на рисунке 3.

Рисунок 3 — Структура нейронной сети HRBF

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

Если вектор радиальных функций в N-мерном входном пространстве обозначить (X), то это пространство является нелинейно -разделяемым на два пространственных класса X+ и X- тогда, когда существует такой вектор весов w, что

(1. 1)

Граница между этими классами определяется уравнением.

На практике это означает, что применение достаточно большого количества скрытых нейронов, реализующих радиальные функции, гарантирует решение задачи классификации при построении всего лишь двухслойной сети: скрытый слой должен реализовать вектор (x), а выходной слой может состоять из единственного линейного нейрона, выполняющего суммирование выходных сигналов от скрытых нейронов с весовыми коэффициентами, заданными вектором W.

Простейшая нейронная сеть радиального типа функционирует по принципу многомерной интерполяции, состоящей в отображении P различных входных векторов Xi (i = 1, 2, …, P) из входного N-мерного пространства во множество из P рациональных чисел di (i = 1, 2. …, P). Для реализации этого процесса необходимо использовать P скрытых нейронов радиального типа и задать такую функцию отображения F (x), для которой выполняется условие интерполяции (см. формулу 1. 2).

.

(1. 2)

С практической же точки зрения использование в разложении P базисных функций недопустимо, поскольку обычно объем обучающей выборки очень велик, и в результате вычислительная сложность обучающего алгоритма становится чрезмерной. Поэтому необходимо редуцировать количество весов, что в этом случае сводится к уменьшению количества базисных функций. Ищется субоптимальное решение в пространстве меньшей размерности, которое с достаточной точностью аппроксимирует точное решение. Если ограничиться K базисными функциями, то аппроксимирующее решение можно представить в виде формулы (1. 3).

(1. 3)

где — приближенное j-е значение функции,

K — число базисных нейронов,

— вес синапса второго уровня k-ого «нейрона»,

— функция активации k-го «нейрона»,

N — число переменных функции F (размерность пространства),

— вес синапса первого уровня k-го «нейрона» для i-ой переменой,

— j-ое значение i-ой переменной,

— вектор параметров функции активации,

P -число обучающих примеров (K < P).

Существуют различные алгоритмы обучения RBF-сетей. Основной алгоритм (гибридный) использует двухшаговую стратегию обучения или смешанное обучение. Он оценивает позицию и ширину ядра на основании данных обучающей выборки, а затем алгоритм минимизации среднеквадратичной ошибки «с учителем"(«online») для определения весов связей. Поскольку выходные элементы линейны, применяется неитерационный алгоритм. После получения этого начального приближения используется градиентный спуск для уточнения параметров сети.

Этот смешанный алгоритм обучения RBF-сети сходится гораздо быстрее, чем алгоритм обратного распространения для обучения многослойных персептронов.

2. Реализация экспертной системы

2.1 Описание структуры ПО

Процесс проектирования автоматизированной системы заключается в построении модели, записанной в графической нотации. При этом соблюдаются общие принципы структурного проектирования: нисходящая разработка, иерархическое построение модели, строгая формализация и четкая семантика. Для разработанного была составлена контекстная диаграмма потоков данных:

Рисунок 4 — Контекстная диаграмма потоков данных верхнего уровня

2.2 Основные решения по интерфейсам

Разработанная программная система базирутся полностью на интерфейсе систем MatLab и MetaTrader, поэтому как таковых особенных интерфейсных решений система не представляет.

2.3 Руководство пользователя ЭС

Назначение разрабатываемой системы состоит в автоматизации процесса исследования нейросетевого аппарата для решения задачи прогнозирования изменения курса валютных пар на рынке Forex.

Целью разрабатываемой системы является моделирование функционирования искусственной нейронной сети как предиктора для изучения свойств и оценки качества радиальной нейронной сети.

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

2.3.1 Условия работы системы

Для работы системы необходимо наличие программных и аппаратных средств.

Требования к аппаратным средствам:

нижний уровень: компьютер с процессором AMD Athlon -1,4ГГц, ОЗУ 128Мб, свободное место на жестком диске 1Мб,

монитор SVGA, поддерживающий разрешение не менее 800×600.

Разработанное ПО работает под управлением операционной системы Windows 98/2000/XP и в рамках платформы Meta Trader 4.

2.3.2 Установка системы

Установка программы на компьютер пользователя заключается прежде всего в установке платформы Meta Trader 4, т.к. программа работает с котировками в специальном виде, импортированными оттуда. ПО Meta Trader распространяется бесплатно, поэтому его легко можно загрузить с сайта компании-производителя Metaquotes. По установке программного комплекса Meta Trader следует скопировать скрипты create_nn. ex4 и get_nn_predict. mq4, поставляемые в рамках разработанного ПО, в директорию expertsscripts каталога установки Meta Trader, а файлы rbf_nn. dll, rbf_nn. ctf — в директорию experts того же каталога установки. Кроме того, следует установить пакет MatLab Redistributable Package v2006a, следуя инструкциям установщика.

2.3.3 Руководство пользователя — эксперта

Для начала работы с программой нужно запустить платформу Meta Trader и зарегистрировать демо или рабочий счет (подробнее см. инструкцию к ПО Meta Trader). Затем на экране появится следующее окно:

Рисунок 5 — Основное окно программы MetaTrader

В левой средней части окна («Навигатор») содержится список Пользовательских скриптов, доступных для выполнения. Выберите в этом списке create_nn.

Рисунок 6 — Основные параметры скрипта create_nn. mq4

Каждый пользовательский скрипт (в частности этот) исполняется на определенном наборе данных. Поэтому, прежде чем производить двойной щелчок на скрипте, выберите график той валютной пары, закономерности изменения курса которой вы собираетесь анализировать. После этого следует произвести двойной щелчок, и на экране появится такое окно:

Данное окно содержит список задаваемых параметров скрипта create_nn. mq4. Здесь TimeFrame — таймфрейм (временное окно) прошедших данных, используемый для обучения нейронной сети, ErrorGoal — точность, до которой производится обучение (т.к. интервал нормализации всех подаваемых на вход ИНС параметров — [-1; 1], то значение 0. 02 составляет максимальную ошибку в 1%), SpreadConstand — параметр волатильности нейронной сети (при хорошем обучении — уменьшить, при плохом — увеличить), MaxSeriesSize — максимальный размер выборки для обучения ИНС.

По запуску скрипта (производится нажатим на кнопку [OK]) на экране появится следующее окно обучения нейросети:

Рисунок 7 — Окно обучения нейросети

Завершение изменений на графике этого окна обозначает, что нейронная сеть обучена.

2.3.3 Руководство конечного пользователя

Запустите систему MetaTrader 4 следуя ием же указаниям, что были даны для пользователя-эксперта. В середине левого края появившегося на экране окна выберите скрипт get_nn_predict и запустите. На экране появится следующее окно:

Рисунок 8 — Результат прогноза

Здесь в статусной строке сообщений выдается набор из четырех чисел, по порядку обозначающих следующее: первое — средний курс следующей свечи, второе — изменение курса на момент закрытия следующей свечи, третье — аналог второй производной (разница между средним значением курса за период и разностью цен открытия и закрытия), четвертое — колебания курса за период (разница между минимальным и максимальным свечным значением). На основании этого и производится торговля.

Имейте в виду, результат получается для текущего (выбранного мышью) графика в том случае, если нейронная сеть для котировок выбранных валютных пар на заданном тайм-фрейме предварительно экспертом была создана.

2.4 Описание контрольного примера. Результаты испытаний

Контрольный пример для анализа работы реализованной системы был взят из реальных исторических данных рынка Forex. Он представляет собой курс валютной пары за последние 2 мес. С интервалом в 4 часа и более подробно представлен в приложении Б.

Обучение нейронной сети на контрольном примере заняло примерно 30 секунд на при тактовой частоте процессора равной 1. 86 ГГц и объемом оперативной памяти равным 512 Мб и происходило следующим образом:

Рисунок 9 — Окно зависимости ошибки обучаемой сети от количества нейронов в ней

Обучение сошлось за 400 эпох (добавленных нейронов) с погрешностью равной или меньшей 0. 02, что при интервале нормализации [-1; 1] дает ошибку равную или менее 1%.

Заключение

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

В качестве структуры сети для аппроксимации функций была выбрана радиально-базисная нейронная сеть (HRBF).

В ходе работы были сформулированы требования к техническому обеспечению и обоснован выбор средств автоматизации. Программное обеспечение системы разработано в среде MetaTrader 4 / MatLab 6.5 под управлением операционной системы Windows XP Professional.

Список использованных источников

Осовский С. Нейронные сети для обработки информации / Пер. с польского И. Д. Рудинского. — М.: Финансы и статистика, 2002. — 344 с.

Горбань А. Н. Обобщенная аппроксимационная теорема и вычислительные возможности нейронных сетей. //Сибирский журнал вычислительной математики. — 1998. — Т. 1, № 1. — С. 12 — 24.

Приложение А

Текст программы

Файл create_nn. mq4:

#property show_inputs

#import «mclmcr. dll»

bool mclInitializeApplication (int options, int count);

bool mclTerminateApplication ();

#import «nn_stock_c. dll»

bool _nn_stock_cInitialize ();

void _nn_stock_cTerminate ();

#import «kernel32. dll»

int WinExec (string lpCmdLine, int uCmdShow);

//---- input parameters

/*extern int TimeFrame=10;

extern double ErrorGoal=0. 02;

extern double SpreadConstant=2. 0;*/

extern int MaxSeriesSize=1000;

//±-----------------------------------------------------------------+

//| expert start function |

//±-----------------------------------------------------------------+

int start ()

{

//----

string FileName;

int FileHandle;

int Mid; //среднее значение

int ClOp; // разница между закрытием и открытием в пунктах

int Der2; // вторая производная

int HiLo; //несатбильность рынка (осцилляция) в пунктах

// сформируем имя файла, например, EURUSD1440. csv

FileName=Symbol ()+Period ()+". csv";

//откроем файл с именем FileName (создадим указатель/handle на него)

FileHandle=FileOpen (FileName, FILE_WRITE | FILE_CSV,"; «);

if (FileHandle< 1)

{

Print («Не удалось открыть файл, ошибка «, GetLastError ());

return;

}

// запишем названия столбцов (создание шапки)

FileWrite (FileHandle,"Ср. значение",

«Первая производная»,

«Вторая производная»,

«Осцилляция»);

for (int index=0; (index<Bars)&&(index<MaxSeriesSize);index++)

{

Mid=(High[index]+Low[index])/(2 * Point);

ClOp=(Close[index]-Open[index])/Point;

Der2=(Close[index]+Open[index]-High[index]-Low[index])/(Point*2);

HiLo=(High[index]-Low[index])/Point;

FileWrite (FileHandle, Mid, ClOp, Der2, HiLo);

}

//закроем файл (освободим указатель/handle, чтобы файл можно было

//открыть для редактирования другими программами)

if (FileHandle> 0) FileClose (FileHandle);

return (0); // работа скрипта завершена

//----

}

Файл create_nn. m:

function result = create_nn (file_name, frame_size, error_goal, spread_constant, data_count, use_test);

try

clear

%установка значений по умолчанию

if (nargin < 1)

file_name = 'EURUSD240';

end;

if (nargin < 2)

frame_size = 5;

end;

if (nargin < 3)

error_goal = 0. 02;

end;

if (nargin < 4)

spread_constant = 2;

end;

if (nargin < 5)

data_count = 2000;

end;

if (nargin < 6)

use_test = 0;

end;

%загрузка массива данных

M=dlmread (strcat (file_name,'. csv'), '; ', 1,0);

j = size (M);

j1 = j (1)

j2 = j (2)

j = 0;

%поиск максимальных и минимальных элементов

%в каждом столбце

AMAX=max (M,[], 1)

AMIN=min (M,[], 1)

%сохранение интервалов

save (strcat (file_name,'. int'), 'AMAX', 'AMIN');

%нормализация

for i=1: j1

for j=1: j2

M (i, j)=(2 * (M (i, j) — AMIN (j)))/(AMAX (j) — AMIN (j)) — 1;

end;

end;

%генерирование вектора примеров

for i=frame_size: j1−1

for j=1: j2*frame_size

Tmp = M (i — rem (j, frame_size) + 1, rem (j, j2)+1);

P (i-frame_size+1,j) = Tmp;

end;

end;

%создание вектора ответов

i=frame_size+1: j1;

j=1: j2;

T = M (i, j);

%создание нейронной сети

pack

net = newrb (P', T', error_goal, spread_constant, 500,100);

save (strcat (file_name,'. net'), 'net', 'frame_size');

result = 0;

catch

result = -1;

end

end

Файл get_nn_predict. m:

function result = get_nn_predict (file_name);

try

clear

%установка значений по умолчанию

if (nargin < 1)

file_name = 'EURUSD240';

end;

%загрузка массива данных

M=dlmread (strcat (file_name,'. csv'), '; ', 1,0);

j = size (M);

j1 = j (1)

j2 = j (2)

j = 0;

%загрузка интервалов

load ('-mat', strcat (file_name,'. int'), 'AMAX', 'AMIN');

%нормализация

for i=1: j1

for j=1: j2

M (i, j)=(2 * (M (i, j) — AMIN (j)))/(AMAX (j) — AMIN (j)) — 1;

end;

end;

%загрузка нейронной сети и размера тайм-фрейма

load ('-mat', strcat (file_name,'. net'), 'net', 'frame_size');

for j=1: j2*frame_size

X (j) = M (j1 — rem (j, frame_size), rem (j, j2)+1);

end;

X

Y = sim (net, X');

%денормализация

for j=1: j2

Z (j) = ((Y (j) + 1)/2) * (AMAX (j) — AMIN (j)) + AMIN (j);

end;

result = Z;

catch

result = zeros (1: j2);

end

end

Приложение Б

Текст контрольного примера

Файл eurusd240. csv:

Ср. значение

Первая производная

Вторая производная

Осцилляция

12 065

-6

7

22

12 057

-81

3

89

11 976

-6

5

22

11 972

0

1

11

11 975

5

1

13

11 978

-2

1

19

11 984

-1

2

33

12 045

63

-5

75

12 041

0

2

18

12 039

4

5

23

12 057

1

-8

21

12 043

-17

-1

20

12 033

5

1

14

12 036

-19

2

32

12 019

0

2

14

12 023

-10

-1

24

12 011

0

2

20

12 074

60

-5

73

12 105

37

1

52

12 099

-22

10

44

12 079

-78

0

85

12 010

1

-1

18

12 016

13

0

19

12 017

-10

8

38

12 021

-1

-7

24

12 043

40

3

50

12 047

-20

0

30

12 050

26

0

31

12 080

20

-5

38

12 079

9

10

34

12 099

-1

-3

40

12 152

44

-12

83

12 171

40

-3

52

12 175

0

0

22

12 168

-20

-1

25

12 150

-34

0

51

12 132

-8

0

49

12 141

23

3

58

12 128

-6

2

18

12 124

-29

-2

37

12 097

-40

3

62

12 065

7

2

32

12 072

7

-2

20

12 139

66

-4

75

12 148

0

-6

19

12 152

-6

-9

28

12 160

23

-5

34

12 182

27

11

64

12 274

89

4

113

12 275

-11

1

33

12 267

3

-4

15

12 266

6

6

23

12 284

1

-7

24

12 281

-5

-1

37

12 301

31

0

51

12 302

5

14

48

12 304

-4

-2

20

12 294

-10

0

20

12 297

2

-5

20

12 331

36

-3

52

12 320

-102

3

113

12 240

4

-1

45

12 232

-3

0

26

12 217

-22

5

33

12 210

8

-2

17

12 209

-13

10

42

12 222

-38

-10

79

12 156

-43

5

57

12 113

-20

-1

22

12 120

0

-4

21

12 121

4

-1

21

12 128

4

4

39

12 120

0

9

26

12 119

-29

4

45

12 117

26

-1

33

12 116

-18

4

26

12 129

29

0

34

12 141

-5

-5

26

12 135

11

11

40

12 138

1

5

22

12 153

4

-5

22

12 166

20

-4

29

12 163

-6

0

20

12 158

-2

-1

18

12 150

-32

22

85

12 131

-15

-4

39

12 109

1

0

14

12 116

0

-2

23

12 111

-2

0

18

12 131

10

-9

32

12 113

-30

6

44

12 115

26

0

39

12 116

-5

-1

12

12 118

0

-1

14

12 116

1

0

11

12 114

-8

5

20

12 113

4

0

14

12 115

5

0

14

12 114

0

0

10

12 198

65

-4

79

12 196

-12

-2

26

12 185

7

2

20

12 261

49

-14

80

12 285

46

-1

56

12 283

-24

4

40

12 270

5

-1

21

12 267

-6

-3

15

12 270

0

8

48

12 299

31

-2

50

12 293

-9

7

32

12 366

80

-2

86

12 366

-12

2

20

12 356

-9

1

18

12 372

1

-9

37

12 350

-26

15

66

12 386

62

-2

68

12 393

-5

-3

20

12 378

-18

6

37

12 362

-4

-1

16

12 359

-7

2

26

12 350

-23

2

37

12 330

-4

13

45

12 321

-5

0

11

12 317

-10

16

46

12 316

-4

-3

17

12 345

20

7

80

12 335

-6

3

34

12 358

20

-2

51

12 349

0

1

21

12 378

-19

-1

28

12 361

6

6

23

12 406

20

-11

51

12 384

-33

0

40

12 401

53

7

69

12 412

-19

-4

33

12 388

-10

0

21

12 384

11

2

20

12 416

1

-8

44

12 439

28

-5

64

12 422

-8

18

56

12 435

20

-3

30

12 435

-3

-3

16

12 430

3

2

20

12 424

-8

11

32

12 450

20

9

66

12 468

1

-6

50

12 457

6

-5

18

12 468

11

-4

26

12 457

-1

3

12

12 455

-15

5

28

12 441

-10

9

38

12 545

99

-9

118

12 543

0

-6

18

12 543

-8

-6

23

12 532

4

0

13

12 565

26

-5

42

12 576

12

9

49

12 634

60

-2

71

12 639

9

7

34

12 627

-16

0

20

12 639

21

-3

30

12 642

-13

-1

29

12 687

34

-10

78

12 667

-37

5

71

12 621

-56

6

67

12 585

18

2

26

12 586

-19

0

20

12 645

75

3

88

12 665

-6

-2

48

12 653

-20

-2

48

12 632

-11

-7

26

12 635

20

1

30

12 650

13

0

18

12 666

-20

-4

49

12 638

-3

2

30

12 658

0

0

69

12 641

5

-4

20

12 636

0

5

18

12 635

-5

6

28

12 626

-33

12

58

12 645

49

5

63

12 695

40

-2

57

12 723

13

-12

41

12 715

-8

-8

31

12 704

4

-5

20

12 704

0

0

29

12 763

57

-2

87

12 755

-6

8

39

12 743

-13

0

20

12 749

-23

-1

35

12 741

14

-3

21

12 785

41

0

60

12 778

-69

0

69

12 727

-6

-5

32

12 715

-1

0

22

12 708

-14

-1

21

12 702

6

0

20

12 704

-15

7

42

12 742

59

5

69

12 780

11

-11

39

12 764

8

2

18

12 769

1

2

20

12 770

3

3

16

12 803

18

-4

40

12 799

-1

1

31

12 814

10

-7

37

12 831

-9

-5

78

12 788

-64

-3

73

12 742

18

-3

24

12 755

-20

6

71

12 784

63

1

81

12 870

75

-1

105

12 858

-18

0

29

12 871

15

-8

42

12 875

5

2

21

12 956

48

-13

96

12 934

-36

7

80

12 917

6

-1

54

12 931

36

-2

41

12 970

-20

-9

53

12 935

7

2

20

12 932

-94

7

110

12 861

-11

1

61

12 849

-11

1

63

12 821

-15

7

43

12 819

15

6

40

12 842

10

-1

41

12 830

-13

17

60

12 866

40

-2

65

12 860

-6

11

49

12 864

15

-1

23

12 860

0

10

23

12 880

15

0

26

12 917

21

0

62

12 920

-62

-8

89

12 845

-113

-5

129

12 759

9

-8

58

12 764

32

0

41

12 762

-9

-3

17

12 801

41

0

65

12 837

26

6

80

12 828

0

14

53

12 871

39

-2

64

12 864

-18

-4

29

12 844

-7

0

20

12 833

-81

1

89

12 773

-5

2

63

12 775

24

20

80

12 784

7

1

23

12 767

-21

0

37

12 756

-19

-7

40

12 764

36

9

70

12 793

35

3

48

12 851

54

1

68

12 884

13

-12

40

12 869

5

8

29

12 876

-7

0

24

12 862

-20

8

40

12 858

-15

0

52

12 865

21

0

48

12 878

-70

-12

99

12 809

4

-2

45

12 805

-6

-2

43

12 865

80

0

97

12 889

-19

-9

68

12 840

-75

14

110

12 786

-7

-8

37

12 776

-2

-6

29

12 764

8

1

18

12 798

13

-8

40

12 800

11

5

48

12 793

-3

9

39

12 826

44

2

48

12 825

-45

1

52

12 790

-3

0

28

12 830

37

-6

62

12 823

-77

0

95

12 746

-6

11

47

12 742

7

2

22

12 755

24

0

37

12 751

-11

0

13

12 764

21

0

25

12 767

-6

-1

14

12 758

-5

5

22

12 757

-1

-2

14

12 765

20

1

22

12 819

51

-1

54

12 875

59

1

64

12 880

0

30

72

12 887

-4

3

29

12 891

0

-2

31

12 876

-20

4

34

12 882

16

-5

28

12 902

-10

-10

46

12 879

-9

-2

35

12 864

-16

1

40

12 848

-22

0

43

12 820

-29

4

42

12 788

-10

11

32

12 801

0

1

49

12 777

-42

5

54

12 824

71

-7

90

12 817

8

6

29

12 821

0

3

20

12 828

-1

-5

20

12 819

-3

4

23

12 939

103

-10

132

12 938

13

3

43

12 936

-9

-4

20

12 943

11

-1

23

12 948

8

2

21

12 978

17

0

45

12 970

-24

2

47

12 964

21

1

32

12 964

-59

0

66

12 911

-10

0

25

12 904

9

2

20

12 932

-9

-12

44

12 896

-54

10

78

12 841

-16

6

33

12 844

0

-2

35

12 837

8

5

32

12 837

-16

0

25

12 826

0

10

45

12 823

-44

1

61

12 813

24

-3

47

12 804

1

8

24

12 807

-20

2

33

12 786

1

4

12

12 800

-16

4

55

12 768

-123

8

141

12 670

-1

-6

43

12 659

8

0

24

12 653

-15

0

18

12 648

4

0

14

12 672

21

3

46

12 673

-1

27

77

12 683

-21

-1

65

12 648

0

-2

18

12 629

14

2

23

12 634

0

2

16

12 649

-20

-8

48

12 612

-6

14

47

12 606

-5

7

33

12 617

-14

-8

41

12 596

-1

-6

20

12 586

1

-1

14

12 598

14

9

40

12 611

4

17

63

12 614

-58

0

84

12 548

0

4

19

12 555

6

0

18

12 574

20

1

35

12 603

14

-7

41

12 646

41

12

112

12 637

-11

-3

33

12 618

-7

6

31

12 616

11

4

22

12 618

-1

6

21

12 630

6

-1

29

12 657

24

10

76

12 645

-22

7

43

12 638

9

3

31

12 647

11

0

22

12 649

1

0

12

12 670

12

-6

26

12 666

-34

-4

45

12 641

13

0

23

12 653

3

-4

19

12 650

-71

2

84

12 596

18

0

21

12 609

-5

-3

26

12 597

-25

1

40

12 582

-1

0

30

12 584

10

-4

22

12 582

-8

2

26

12 591

17

0

27

12 595

-31

-4

40

12 574

16

6

36

12 616

28

0

60

12 602

-18

4

26

12 616

26

0

38

12 630

6

-5

19

12 641

11

-1

31

12 649

3

-1

30

12 677

33

-2

44

12 675

-3

2

19

12 669

1

2

12

12 678

0

-4

19

12 675

-30

-2

50

12 632

-63

2

72

12 592

11

0

42

12 586

-9

-2

20

www.

ПоказатьСвернуть
Заполнить форму текущей работой