close

Вход

Забыли?

вход по аккаунту

?

Записка (2)

код для вставкиСкачать
4
Содержание
Введение .................................................................................................................. 5
1 Анализ предметной области и обзор используемых методов
инструментальных средств ................................................................................. 7
1.1 Постановка задачи прогнозирования ................................................................................7
1.2 Краткое описание модели представления знаний ............................................................9
1.3 Описание инструментальных средств .............................................................................12
1.4 Построение структуры семантической сети ...................................................................12
2 РЕАЛИЗАЦИЯ ЭКСПЕРТНОЙ СИСТЕМЫ ............................................. 17
2.1 Описание структуры ПО ...................................................................................................17
2.2 Основные решения по интерфейсам................................................................................17
2.3 Руководство пользователя ЭС ..........................................................................................18
2.3.1 Условия работы системы..................................................................... 18
2.3.2 Установка системы .............................................................................. 18
2.3.3 Руководство пользователя – эксперта ................................................ 18
2.3.3 Руководство конечного пользователя ................................................ 20
2.4 Описание контрольного примера. Результаты испытаний............................................21
Заключение ........................................................................................................... 23
Список использованных источников ............................................................. 24
Приложение А Текст программы .................................................................... 25
5
Введение
Одна из наиболее динамично развивающихся областей современной теории интеллектуальных вычислений (computational intelligence) связана с построением и применением искусственных нейронных сетей.
Нейронные сети – это раздел искусственного интеллекта, в котором для обработки
сигналов используются явления, аналогичные происходящим в нейронах живых существ.
Важнейшая особенность нейронной сети, свидетельствующая об ее широких возможностях и огромном потенциале для решения вычислительных задач, состоит в параллельной обработке информации всеми звеньями цепи, что позволяет ускорять процесс обработки информации.
Другое не менее важное свойство нейронной сети – способность к обучению и
обобщению накопленных знаний. Нейронная сеть обладает чертами искусственного интеллекта. Натренированная на ограниченном множестве данных сеть способна обобщать
полученную информацию и показывать хорошие результаты на данных, не использовавшихся в процессе обучения.
Различные способы объединения нейронов между собой и организации их взаимодействия привели к созданию сетей разных структур.
Среди множества существующих структур сетей в качестве важнейших можно выделить:
 многослойный персептрон,
 радиальные сети,
 сети с самоорганизацией в результате конкуренции нейронов,
 сети с самоорганизацией корреляционного типа,
 рекуррентные сети, в которых имеются сигналы обратной связи.
Искусственные нейронные сети в практических приложениях, как правило, используются в качестве подсистемы управления или выработки решений, передающей исполнительный сигнал другим подсистемам, имеющим иную методологическую основу. Задачи, решаемые с помощью нейронных сетей, подразделяются на несколько групп:
 аппроксимация;
 классификация;
 распознавание образов;
 прогнозирование;
 идентификация;
 оценивание;
6
 ассоциативное управление.
В данной работе нейронные сети используются для решения задачи прогнозирования поведения курса валютных пар на валютной бирже Forex с использованием массива
числовых данных, содержащего предыдущие значения курса и его колебания на фиксированные моменты времени.
7
1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ И ОБЗОР ИСПОЛЬЗУЕМЫХ МЕТОДОВ ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ
1.1 Постановка задачи прогнозирования
Из всего множества решаемых нейронными сетями задач для прогнозирования курса
на валютной бирже являются наиболее важными являются:
- Классификационный прогноз направления движения курса;
- Прогноз цены;
- Выработка торговых сигналов покупки/продажи (buy/sell signals).
Конечной целью любого вида анализа на валютной бирже, в том числе и нейронных
технологий, является выработка торговых сигналов. Настройка нейронной сети для генерации торговых сигналов – задача сложная и требует углубленного понимания поведения
рынка и механизма работы нейронных сетей.
Учитывая специфический характер прогнозирования временных рядов и определенный разнобой в терминологии, будем придерживаться ряда определений.
Предысторией ряда назовем набор элементов временного ряда, который учитывается
для одного шага прогнозирования следующих элементов временного ряда. Одношаговое
прогнозирование сводится к задачам отображения в случае, когда значение элементов
предыстории могут определять лишь один дискретный отсчет выходных величин. Многошаговое прогнозирование характеризуется увеличением дискретных отсчетов выходной величины и, соответственно, увеличением времени, на который осуществляется прогноз (время опережения Топ). При многошаговом прогнозировании Топ=а*R, где R - количество шагов вычисления прогнозирования; а - шаг дискретизации выходного параметра
(например, год, месяц, день, и т.п.).
По времени опережения различают виды прогнозов:

сглаживание, R= 0;

краткосрочный прогноз, R= 1 - 2;

середнесрочный прогноз, R= 3 - 7;

долгосрочный прогноз, R= 10 - 15.
Очевидно, что вид прогноза существенно влияет на выбор средств и методику его реализации.
В случае прогнозирования прогноза цены валютной пары на рынке Forex мы имеем
однопараметрическую задачу прогнозирования, т.к. явление представлено лишь одним
признаком, изменения которого происходят во времени.
8
Данные про поведение объекта, признаки которого связаны с течением времени,
представлены как результаты наблюдений в равномерные отсчеты времени. Для моментов
времени 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. Тогда сформированное
множество значений для нашей задачи будет иметь вид, приведенный ниже:
9
Таблица 1.
Множество данных для прогнозирования методом “временных окон”
Входы
x(t
x(t2)
1)
x(t
x(t3)
2)
x(t
x(t4)
3)
і)
Выходы
...
...
x(t
x(tі+
1)
.
..
.
..
.
..
.
..
.
..
x(tm)
x(tm+1)
x(tm+1)
x(tm+2)
x(tm+2)
x(tm+3)
...
...
x(ti+m-1)
x(ti+m)
1.2 Краткое описание модели представления знаний
В данной курсовой работе для представления знаний используется семантическая
сеть. Семантическая сеть - наиболее удобная и понятийная экспертам модель представления знаний. Под семантической сетью, как правило, подразумевают граф, узлы которого
соответствуют понятиям или объектам. В данной работе используется частный вид семантической сети – а именно сеть нейронная.
Нейронные сети  исключительно мощный метод моделирования, позволяющий
воспроизводить чрезвычайно сложные зависимости. В частности, нейронные сети – нелинейны по своей природе. На протяжении многих лет линейное моделирование было основным методом моделирования в большинстве областей, поскольку для него хорошо
разработаны процедуры оптимизации. В задачах, где линейная аппроксимация неудовлетворительна (а таких достаточно много), линейные модели работают плохо. Кроме того,
нейронные сети справляются с "проклятием размерности", которое не позволяет моделировать линейные зависимости в случае большого числа переменных.
Очень большое количество межнейронных соединений приводит к тому, что сеть
становится нечувствительной к ошибкам, возникающим в отдельных контактах. Функции
10
поврежденных соединений принимают на себя другие элементы, в результате в деятельности сети не наблюдаются заметные нарушения.
Другое не менее важное свойство нейронной сети состоит в способности к обучению
и к обобщению полученных знаний. Сеть обладает чертами так называемого искусственного интеллекта. Натренированная на ограниченном множестве обучающих выборок, она
обобщает накопленную информацию и вырабатывает ожидаемую реакцию применительно к данным, не обрабатывавшимся в процессе обучения.
Нейронные сети учатся на примерах. Пользователь нейронной сети подбирает представительные данные, а затем запускает алгоритм обучения, который автоматически воспринимает структуру данных. При этом от пользователя, конечно, требуется какой-то
набор эвристических знаний о том, как следует отбирать и подготавливать данные, выбирать нужную архитектуру сети и интерпретировать результаты, однако уровень знаний,
необходимый для успешного применения нейронных сетей, гораздо скромнее, чем,
например, при использовании традиционных методов статистики.
Важнейшее свойство нейронных сетей, свидетельствующее об их огромном потенциале и широких прикладных возможностях, состоит в параллельной обработке информации одновременно всеми нейронами. Благодаря этой способности при большом количестве межнейронных связей достигается значительное ускорение процесса обработки информации. Во многих ситуациях становится возможной обработка сигналов в реальном
масштабе времени.
Системам, реализующим нейросетевые принципы обработки данных, свойственна
способность к "запоминанию". Известно, что аппроксимирующую систему на базе искусственных нейронных сетей можно обучать довольно большим объемам информации, в которой система может выявлять зависимости, не поддающиеся обнаружению при использовании других методов обработки информации.
Нейронные сети привлекательны с интуитивной точки зрения, ибо они основаны на
примитивной биологической модели нервных систем. В будущем развитие таких нейробиологических моделей может привести к созданию действительно мыслящих компьютеров.
В основу искусственных нейронных сетей положены следующие черты живых
нейронных сетей, позволяющие им хорошо справляться с нерегулярными задачами:
 простой обрабатывающий элемент – нейрон;
 очень большое число нейронов участвует в обработке информации;
 один нейрон связан с большим числом других нейронов (глобальные связи);
 изменяющиеся веса связей между нейронами;
11
 массированная параллельность обработки информации.
Нейронные сети возникли из исследований в области искусственного интеллекта, а
именно, из попыток воспроизвести способность биологических нервных систем обучаться
и исправлять ошибки, моделируя низкоуровневую структуру мозга.
Прототипом для создания нейрона послужил биологический нейрон головного мозга. Биологический нейрон имеет тело, совокупность отростков  дендритов, по которым в
нейрон поступают входные сигналы, и отросток  аксон, передающий выходной сигнал
нейрона другим клеткам. Точка соединения дендрита и аксона называется синапсом.
Упрощенно функционирование нейрона можно представить следующим образом:
1) нейрон получает от дендритов набор (вектор) входных сигналов;
2) в теле нейрона оценивается суммарное значение входных сигналов. Однако входы
нейрона неравнозначны. Каждый вход характеризуется некоторым весовым коэффициентом, определяющим важность поступающей по нему информации. Таким образом, нейрон не просто суммирует значения входных сигналов, а вычисляет скалярное
произведение вектора входных сигналов и вектора весовых коэффициентов;
3) нейрон формирует выходной сигнал, интенсивность которого зависит от значения вычисленного скалярного произведения. Если оно не превышает некоторого заданного
порога, то выходной сигнал не формируется вовсе – нейрон "не срабатывает";
4) выходной сигнал поступает на аксон и передается дендритам других нейронов.
Поведение искусственной нейронной сети зависит от значения весовых параметров
и от функции возбуждения нейронов.
Нейронная сеть представляет собой совокупность большого числа сравнительно
простых элементов – нейронов, топология соединений которых зависит от типа сети. Чтобы создать нейронную сеть для решения какой-либо конкретной задачи, мы должны выбрать, каким образом следует соединять нейроны друг с другом, и соответствующим образом подобрать значения весовых параметров на этих связях. Может ли влиять один элемент на другой, зависит от установленных соединений. Вес соединения определяет силу
влияния.
Простейшая сеть имеет структуру прямой передачи сигнала: сигналы проходят от
входов через скрытые элементы и, в конце концов, приходят на выходные элементы. Такая структура имеет устойчивое поведение. Если же сеть рекуррентная (т.е. содержит связи, ведущие назад от более дальних к более ближним нейронам), то она может быть неустойчива и иметь очень сложную динамику поведения. Рекуррентные сети представляют
большой интерес для исследователей в области нейронных сетей, однако, при решении
12
практических задач, по крайней мере, до сих пор, наиболее полезными оказались
структуры прямой передачи.
Нейроны регулярным образом организованы в слои. Входной слой служит просто
для ввода значений входных переменных. Каждый из скрытых и выходных нейронов соединен со всеми элементами предыдущего слоя. При работе (использовании) сети во
входные элементы подаются значения входных переменных, затем последовательно отрабатывают нейроны промежуточных и выходного слоев. Каждый из них вычисляет свое
значение активации. Затем значение активации преобразуются с помощью функции активации, и в результате получается выход нейрона.
После того, как вся сеть отработает, выходные значения элементов выходного слоя
принимаются за выход всей сети в целом.
Для решения задачи прогнозирования можно использовать многослойный персептрон, радиально-базисную сеть, обобщенно-регрессионную сеть и рекуррентные сети.
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 Построение структуры семантической сети
Для решения какой-либо задачи с применением искусственной нейронной сети следует, прежде всего, спроектировать структуру сети, адекватную поставленной задаче. Это
13
предполагает выбор типа сети, количества слоев сети и нейронов в каждом слое, а также определение необходимых связей между слоями.
Поскольку решаемая задача имеет достаточно жесткие ограничения по времени своего исполнения (при прогнозировании, например, пятиминутных котировок), в качестве
модели ИНС были сразу выбраны нерекуррентные сети прямого распространения, поскольку они хорошо обучаются за небольшие конечные промежутки времени; кроме того,
существует несколько хорошо изученных и эффективных алгоритмов для обучения сетей
такого типа.
Из всех типов нейронных сетей была выбрана радиально-базисная сеть вследствие
некоторых особенностей биржевого предсказания, а именно представления биржевых котировок на определенный промежуток времени в виде т.н. “бара” или “японской свечи”.
Бар (японская свеча) представляет собой графическое изображение четырех основных параметров на промежуток времени: цены открытия (“open”), цены закрытия (“close”), максимального скачка цены вверх (“high”) и вниз (“low”). При осуществлении классического
анализа производится классификация типов этих свечей и на основании этого строится
прогноз. Поэтому выбор радиально базисной сети для такого случая хорошо обусловлен и
вполне естественен, поскольку она делает то же самое.
Подбор количества нейронов во входном слое обусловлен размерностью входного
вектора. Подобная ситуация и с выходным слоем, в котором количество нейронов принимается равным размерности ожидаемого вектора. Теоретическое решение задачи подбора
количества скрытых слоев и числа нейронов в них в смысле условия достаточности было
предложено математиками, занимающимися аппроксимацией функций нескольких переменных.
Поподробнее остановимся на сети RBF, поскольку она является не настолько элементарной по своей структуре, как многослойный персептрон.
Сети, использующие радиальные базисные функции, являются частным случаем
двухслойной сети прямого распространения (см. рисунок 2). Каждый элемент скрытого
слоя использует в качестве активационной функции радиальную базисную функцию типа
гауссовой.
14
x1
+f1
w1
x2
+f2
w2
+y
wK
+fK
xN
Рисунок 2 – Структура нейронной сети RBF
Радиальные нейронные сети относятся к той же категории сетей, обучаемых с учителем, что и многослойный персептрон. По сравнению с многослойными сетями, имеющими сигмоидальные функции активации, они отличаются некоторыми специфическими
свойствами, обеспечивающими более простое отображение характеристик моделируемого
процесса.
Радиальные функции по своей природе имеют локальный характер и принимают
ненулевые значения только в зоне вокруг определенного центра. Это позволяет легко
установить зависимость между параметрами базисных функций и физическим размещением обучающих данных в многомерном пространстве. Поэтому удается относительно
просто найти удовлетворительные начальные условия процесса обучения с учителем.
Важное достоинство сетей – значительно упрощенный алгоритм обучения. При
наличии одного скрытого слоя и тесной связи активности нейрона с соответствующей областью пространства обучающих данных точка начала обучения оказывается гораздо
ближе оптимальному значению, чем это имеет место в многослойных сетях. Кроме того,
можно отделить этап подбора параметров базисных функций от подбора значений весов
сети (гибридный метод), что сильно упрощает и ускоряет процесс обучения. Для радиальных сетей, особенно основанных на ортогонализации, формирование оптимальной структуры сети оказывается естественным этапом процесса обучения, не требующим никаких
дополнительных усилий.
Радиальная функция (функция ядра) центрируется в точке, которая определяется весовым вектором, связанным с нейроном. Как позиция, так и ширина функции ядра должна
быть обучена по выборочным образцам. Обычно ядер гораздо меньше чем обучающих
примеров. Каждый выходной элемент вычисляет линейную комбинацию этих радиальных
базисных функций.
15
Структуру RBF-сети можно усилить путем применения масштабирования входных сигналов аналогичного сигмоидальной нейронной сети. Масштабирующая система
вводит дополнительные степени свободы сети, что позволяет лучше приблизить выходной
сигнал сети к ожидаемому значению функции. Коэффициенты масштабирования входных
сигналов представляют собой группу подбираемых параметров. За счет увеличения количества подбираемых параметров удовлетворительная точность аппроксимации может
быть достигнута при меньшем числе нейронов. Структура HRBF сети представлена на рисунке 3.
w11
x1
w12
+f1
w1K
w21
w1
w22
x2
w2K
+f2
w2
wN1
wN2
+y
wK
+fK
xN
wNK
Рисунок 3 – Структура нейронной сети HRBF
Математическую основу функционирования радиальных сетей составляет теорема Т.
Ковера о распознавании образов, в соответствии с которой нелинейные проекции образов
в некоторое многомерное пространство могут быть линейно разделены с большей вероятностью, чем при их проекции в пространство с меньшей размерностью.
Если вектор радиальных функций ( x)  [1( x), 2 ( x),..., K ( x)]T в N-мерном входном пространстве обозначить (X), то это пространство является нелинейно разделяемым на два пространственных класса X+ и X- тогда, когда существует такой вектор весов w, что
wT  ( x)  0 x  X  ,
wT  ( x)  0 x  X  .
Граница между этими классами определяется уравнением wT  ( x)  0 .
(1.1)
16
На практике это означает, что применение достаточно большого количества скрытых нейронов, реализующих радиальные функции  i (x) , гарантирует решение задачи
классификации при построении всего лишь двухслойной сети: скрытый слой должен реализовать вектор (x), а выходной слой может состоять из единственного линейного
нейрона, выполняющего суммирование выходных сигналов от скрытых нейронов с весовыми коэффициентами, заданными вектором W.
Простейшая нейронная сеть радиального типа функционирует по принципу многомерной интерполяции, состоящей в отображении P различных входных векторов Xi (i = 1,
2, …, P) из входного N-мерного пространства во множество из P рациональных чисел di (i
= 1, 2. …, P). Для реализации этого процесса необходимо использовать P скрытых нейронов радиального типа и задать такую функцию отображения F(x), для которой выполняется условие интерполяции (см. формулу 1.2).
F ( X i )  di .
(1.2)
С практической же точки зрения использование в разложении P базисных функций
недопустимо, поскольку обычно объем обучающей выборки очень велик, и в результате
вычислительная сложность обучающего алгоритма становится чрезмерной. Поэтому
необходимо редуцировать количество весов, что в этом случае сводится к уменьшению
количества базисных функций. Ищется субоптимальное решение в пространстве меньшей
размерности, которое с достаточной точностью аппроксимирует точное решение. Если
ограничиться K базисными функциями, то аппроксимирующее решение можно представить в виде формулы (1.3).
K
N
k 1
i 1
~
y j   wk( 2) f k ( wik(1) x ij , ), j  1,2,...P,
y j – приближенное j-е значение функции,
где ~
K – число базисных нейронов,
wk( 2) – вес синапса второго уровня k-ого «нейрона»,
f k – функция активации k-го «нейрона»,
N – число переменных функции F(размерность пространства R N ),
wik(1) – вес синапса первого уровня k-го «нейрона» для i-ой переменой,
x ij – j-ое значение i-ой переменной,
 – вектор параметров функции активации,
P –число обучающих примеров (K < P).
(1.3)
17
Существуют различные алгоритмы обучения RBF-сетей. Основной алгоритм (гибридный) использует двухшаговую стратегию обучения или смешанное обучение. Он
оценивает позицию и ширину ядра на основании данных обучающей выборки, а затем алгоритм минимизации среднеквадратичной ошибки «с учителем»(«online») для определения весов связей. Поскольку выходные элементы линейны, применяется неитерационный
алгоритм. После получения этого начального приближения используется градиентный
спуск для уточнения параметров сети.
Этот смешанный алгоритм обучения RBF-сети сходится гораздо быстрее, чем алгоритм обратного распространения для обучения многослойных персептронов.
2 РЕАЛИЗАЦИЯ ЭКСПЕРТНОЙ СИСТЕМЫ
2.1 Описание структуры ПО
Процесс проектирования автоматизированной системы заключается в построении
модели, записанной в графической нотации. При этом соблюдаются общие принципы
структурного проектирования: нисходящая разработка, иерархическое построение модели, строгая формализация и четкая семантика. Для разработанного была составлена контекстная диаграмма потоков данных:
Рисунок 4 – Контекстная диаграмма потоков данных верхнего уровня
2.2 Основные решения по интерфейсам
Разработанная программная система базирутся полностью на интерфейсе систем
MatLab и MetaTrader, поэтому как таковых особенных интерфейсных решений система не
представляет.
18
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
(www.metaquotes.com). По установке программного комплекса Meta Trader следует скопировать скрипты create_nn.ex4 и get_nn_predict.mq4, поставляемые в рамках разработанного
ПО, в директорию experts\scripts каталога установки Meta Trader, а файлы rbf_nn.dll,
rbf_nn.ctf – в директорию experts того же каталога установки. Кроме того, следует установить пакет MatLab Redistributable Package v2006a, следуя инструкциям установщика.
2.3.3 Руководство пользователя – эксперта
Для начала работы с программой нужно запустить платформу Meta Trader и зарегистрировать демо или рабочий счет (подробнее см. инструкцию к ПО Meta Trader). Затем
на экране появится следующее окно:
19
Рисунок 5 – Основное окно программы MetaTrader
В левой средней части окна (“Навигатор”) содержится список Пользовательских
скриптов, доступных для выполнения. Выберите в этом списке create_nn.
Каждый пользовательский скрипт (в частности этот) исполняется на определенном
наборе данных. Поэтому, прежде чем производить двойной щелчок на скрипте, выберите
график той валютной пары, закономерности изменения курса которой вы собираетесь
анализировать. После этого следует произвести двойной щелчок, и на экране появится такое окно:
Рисунок 6 – Основные параметры скрипта create_nn.mq4
Данное окно содержит список задаваемых параметров скрипта create_nn.mq4. Здесь
TimeFrame – таймфрейм (временное окно) прошедших данных, используемый для обучения нейронной сети, ErrorGoal – точность, до которой производится обучение (т.к. интер-
20
вал нормализации всех подаваемых на вход ИНС параметров – [-1; 1], то значение 0.02
составляет максимальную ошибку в 1%), SpreadConstand – параметр волатильности
нейронной сети (при хорошем обучении – уменьшить, при плохом - увеличить), MaxSeriesSize – максимальный размер выборки для обучения ИНС.
По запуску скрипта (производится нажатим на кнопку [OK]) на экране появится
следующее окно обучения нейросети:
Рисунок 7 – Окно обучения нейросети
Завершение изменений на графике этого окна обозначает, что нейронная сеть обучена.
2.3.3 Руководство конечного пользователя
Запустите систему MetaTrader 4 следуя ием же указаниям, что были даны для пользователя-эксперта. В середине левого края появившегося на экране окна выберите скрипт
get_nn_predict и запустите. На экране появится следующее окно:
21
Рисунок 8 – Результат прогноза
Здесь в статусной строке сообщений выдается набор из четырех чисел, по порядку
обозначающих следующее: первое – средний курс следующей свечи, второе – изменение
курса на момент закрытия следующей свечи, третье – аналог второй производной (разница между средним значением курса за период и разностью цен открытия и закрытия), четвертое – колебания курса за период (разница между минимальным и максимальным свечным значением). На основании этого и производится торговля.
Имейте в виду, результат получается для текущего (выбранного мышью) графика в
том случае, если нейронная сеть для котировок выбранных валютных пар на заданном
тайм-фрейме предварительно экспертом была создана.
2.4 Описание контрольного примера. Результаты испытаний
Контрольный пример для анализа работы реализованной системы был взят из реальных исторических данных рынка Forex. Он представляет собой курс валютной пары за последние 2 мес. С интервалом в 4 часа и более подробно представлен в приложении Б.
Обучение нейронной сети на контрольном примере заняло примерно 30 секунд на
при тактовой частоте процессора равной 1.86 ГГц и объемом оперативной памяти равным
512 Мб и происходило следующим образом:
22
Рисунок 9 – Окно зависимости ошибки обучаемой сети от количества нейронов в ней
Обучение сошлось за 400 эпох (добавленных нейронов) с погрешностью равной или
меньшей 0.02, что при интервале нормализации [-1;1] дает ошибку равную или менее 1%.
23
Заключение
В соответствии с заданием на курсовой проект разработана автоматизированная система прогнозирования относительного курса валютных пар для международной валютной биржи Forex с использованием нейронных сетей.
В качестве структуры сети для аппроксимации функций была выбрана радиальнобазисная нейронная сеть (HRBF).
В ходе работы были сформулированы требования к техническому обеспечению и
обоснован выбор средств автоматизации. Программное обеспечение системы разработано
в среде MetaTrader 4 / MatLab 6.5 под управлением операционной системы Windows XP
Professional.
24
Список использованных источников
1. Осовский С. Нейронные сети для обработки информации / Пер. с польского И.Д. Рудинского. – М.: Финансы и статистика, 2002. – 344 с.
2. Горбань А.Н. Обобщенная аппроксимационная теорема и вычислительные возможности нейронных сетей. //Сибирский журнал вычислительной математики. – 1998. – Т.1,
№1. – С. 12 – 24.
25
Приложение А Текст программы
Файл 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,"Ср.значение",
"Первая производная",
26
"Вторая производная",
"Осцилляция");
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);
27
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
%установка значений по умолчанию
28
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
29
Приложение Б Текст контрольного примера
Файл eurusd240.csv:
Ср.значение
Первая производная
12065
12057
11976
11972
11975
11978
11984
12045
12041
12039
12057
12043
12033
12036
12019
12023
12011
12074
12105
12099
12079
12010
12016
12017
12021
12043
12047
12050
12080
12079
12099
12152
12171
12175
12168
12150
12132
12141
12128
12124
12097
12065
12072
12139
12148
12152
12160
12182
12274
12275
12267
Вторая производная
-6
-81
-6
0
5
-2
-1
63
0
4
1
-17
5
-19
0
-10
0
60
37
-22
-78
1
13
-10
-1
40
-20
26
20
9
-1
44
40
0
-20
-34
-8
23
-6
-29
-40
7
7
66
0
-6
23
27
89
-11
3
7
3
5
1
1
1
2
-5
2
5
-8
-1
1
2
2
-1
2
-5
1
10
0
-1
0
8
-7
3
0
0
-5
10
-3
-12
-3
0
-1
0
0
3
2
-2
3
2
-2
-4
-6
-9
-5
11
4
1
-4
Осцилляция
22
89
22
11
13
19
33
75
18
23
21
20
14
32
14
24
20
73
52
44
85
18
19
38
24
50
30
31
38
34
40
83
52
22
25
51
49
58
18
37
62
32
20
75
19
28
34
64
113
33
15
30
12266
12284
12281
12301
12302
12304
12294
12297
12331
12320
12240
12232
12217
12210
12209
12222
12156
12113
12120
12121
12128
12120
12119
12117
12116
12129
12141
12135
12138
12153
12166
12163
12158
12150
12131
12109
12116
12111
12131
12113
12115
12116
12118
12116
12114
12113
12115
12114
12198
12196
12185
12261
12285
12283
12270
12267
12270
6
1
-5
31
5
-4
-10
2
36
-102
4
-3
-22
8
-13
-38
-43
-20
0
4
4
0
-29
26
-18
29
-5
11
1
4
20
-6
-2
-32
-15
1
0
-2
10
-30
26
-5
0
1
-8
4
5
0
65
-12
7
49
46
-24
5
-6
0
6
-7
-1
0
14
-2
0
-5
-3
3
-1
0
5
-2
10
-10
5
-1
-4
-1
4
9
4
-1
4
0
-5
11
5
-5
-4
0
-1
22
-4
0
-2
0
-9
6
0
-1
-1
0
5
0
0
0
-4
-2
2
-14
-1
4
-1
-3
8
23
24
37
51
48
20
20
20
52
113
45
26
33
17
42
79
57
22
21
21
39
26
45
33
26
34
26
40
22
22
29
20
18
85
39
14
23
18
32
44
39
12
14
11
20
14
14
10
79
26
20
80
56
40
21
15
48
31
12299
12293
12366
12366
12356
12372
12350
12386
12393
12378
12362
12359
12350
12330
12321
12317
12316
12345
12335
12358
12349
12378
12361
12406
12384
12401
12412
12388
12384
12416
12439
12422
12435
12435
12430
12424
12450
12468
12457
12468
12457
12455
12441
12545
12543
12543
12532
12565
12576
12634
12639
12627
12639
12642
12687
12667
12621
31
-9
80
-12
-9
1
-26
62
-5
-18
-4
-7
-23
-4
-5
-10
-4
20
-6
20
0
-19
6
20
-33
53
-19
-10
11
1
28
-8
20
-3
3
-8
20
1
6
11
-1
-15
-10
99
0
-8
4
26
12
60
9
-16
21
-13
34
-37
-56
-2
7
-2
2
1
-9
15
-2
-3
6
-1
2
2
13
0
16
-3
7
3
-2
1
-1
6
-11
0
7
-4
0
2
-8
-5
18
-3
-3
2
11
9
-6
-5
-4
3
5
9
-9
-6
-6
0
-5
9
-2
7
0
-3
-1
-10
5
6
50
32
86
20
18
37
66
68
20
37
16
26
37
45
11
46
17
80
34
51
21
28
23
51
40
69
33
21
20
44
64
56
30
16
20
32
66
50
18
26
12
28
38
118
18
23
13
42
49
71
34
20
30
29
78
71
67
32
12585
12586
12645
12665
12653
12632
12635
12650
12666
12638
12658
12641
12636
12635
12626
12645
12695
12723
12715
12704
12704
12763
12755
12743
12749
12741
12785
12778
12727
12715
12708
12702
12704
12742
12780
12764
12769
12770
12803
12799
12814
12831
12788
12742
12755
12784
12870
12858
12871
12875
12956
12934
12917
12931
12970
12935
12932
18
-19
75
-6
-20
-11
20
13
-20
-3
0
5
0
-5
-33
49
40
13
-8
4
0
57
-6
-13
-23
14
41
-69
-6
-1
-14
6
-15
59
11
8
1
3
18
-1
10
-9
-64
18
-20
63
75
-18
15
5
48
-36
6
36
-20
7
-94
2
0
3
-2
-2
-7
1
0
-4
2
0
-4
5
6
12
5
-2
-12
-8
-5
0
-2
8
0
-1
-3
0
0
-5
0
-1
0
7
5
-11
2
2
3
-4
1
-7
-5
-3
-3
6
1
-1
0
-8
2
-13
7
-1
-2
-9
2
7
26
20
88
48
48
26
30
18
49
30
69
20
18
28
58
63
57
41
31
20
29
87
39
20
35
21
60
69
32
22
21
20
42
69
39
18
20
16
40
31
37
78
73
24
71
81
105
29
42
21
96
80
54
41
53
20
110
33
12861
12849
12821
12819
12842
12830
12866
12860
12864
12860
12880
12917
12920
12845
12759
12764
12762
12801
12837
12828
12871
12864
12844
12833
12773
12775
12784
12767
12756
12764
12793
12851
12884
12869
12876
12862
12858
12865
12878
12809
12805
12865
12889
12840
12786
12776
12764
12798
12800
12793
12826
12825
12790
12830
12823
12746
12742
-11
-11
-15
15
10
-13
40
-6
15
0
15
21
-62
-113
9
32
-9
41
26
0
39
-18
-7
-81
-5
24
7
-21
-19
36
35
54
13
5
-7
-20
-15
21
-70
4
-6
80
-19
-75
-7
-2
8
13
11
-3
44
-45
-3
37
-77
-6
7
1
1
7
6
-1
17
-2
11
-1
10
0
0
-8
-5
-8
0
-3
0
6
14
-2
-4
0
1
2
20
1
0
-7
9
3
1
-12
8
0
8
0
0
-12
-2
-2
0
-9
14
-8
-6
1
-8
5
9
2
1
0
-6
0
11
2
61
63
43
40
41
60
65
49
23
23
26
62
89
129
58
41
17
65
80
53
64
29
20
89
63
80
23
37
40
70
48
68
40
29
24
40
52
48
99
45
43
97
68
110
37
29
18
40
48
39
48
52
28
62
95
47
22
34
12755
12751
12764
12767
12758
12757
12765
12819
12875
12880
12887
12891
12876
12882
12902
12879
12864
12848
12820
12788
12801
12777
12824
12817
12821
12828
12819
12939
12938
12936
12943
12948
12978
12970
12964
12964
12911
12904
12932
12896
12841
12844
12837
12837
12826
12823
12813
12804
12807
12786
12800
12768
12670
12659
12653
12648
12672
24
-11
21
-6
-5
-1
20
51
59
0
-4
0
-20
16
-10
-9
-16
-22
-29
-10
0
-42
71
8
0
-1
-3
103
13
-9
11
8
17
-24
21
-59
-10
9
-9
-54
-16
0
8
-16
0
-44
24
1
-20
1
-16
-123
-1
8
-15
4
21
0
0
0
-1
5
-2
1
-1
1
30
3
-2
4
-5
-10
-2
1
0
4
11
1
5
-7
6
3
-5
4
-10
3
-4
-1
2
0
2
1
0
0
2
-12
10
6
-2
5
0
10
1
-3
8
2
4
4
8
-6
0
0
0
3
37
13
25
14
22
14
22
54
64
72
29
31
34
28
46
35
40
43
42
32
49
54
90
29
20
20
23
132
43
20
23
21
45
47
32
66
25
20
44
78
33
35
32
25
45
61
47
24
33
12
55
141
43
24
18
14
46
35
12673
12683
12648
12629
12634
12649
12612
12606
12617
12596
12586
12598
12611
12614
12548
12555
12574
12603
12646
12637
12618
12616
12618
12630
12657
12645
12638
12647
12649
12670
12666
12641
12653
12650
12596
12609
12597
12582
12584
12582
12591
12595
12574
12616
12602
12616
12630
12641
12649
12677
12675
12669
12678
12675
12632
12592
12586
-1
-21
0
14
0
-20
-6
-5
-14
-1
1
14
4
-58
0
6
20
14
41
-11
-7
11
-1
6
24
-22
9
11
1
12
-34
13
3
-71
18
-5
-25
-1
10
-8
17
-31
16
28
-18
26
6
11
3
33
-3
1
0
-30
-63
11
-9
27
-1
-2
2
2
-8
14
7
-8
-6
-1
9
17
0
4
0
1
-7
12
-3
6
4
6
-1
10
7
3
0
0
-6
-4
0
-4
2
0
-3
1
0
-4
2
0
-4
6
0
4
0
-5
-1
-1
-2
2
2
-4
-2
2
0
-2
77
65
18
23
16
48
47
33
41
20
14
40
63
84
19
18
35
41
112
33
31
22
21
29
76
43
31
22
12
26
45
23
19
84
21
26
40
30
22
26
27
40
36
60
26
38
19
31
30
44
19
12
19
50
72
42
20
36
Документ
Категория
Компьютеры, Программирование
Просмотров
138
Размер файла
1 081 Кб
Теги
записка
1/--страниц
Пожаловаться на содержимое документа