Файл: Анализ и оценка средств реализации структурных методов анализа и проектирования экономической информационной системы (Анализ предметной области)..pdf
Добавлен: 02.04.2023
Просмотров: 443
Скачиваний: 2
После обогащения данных необходимо записать исходные и обогащенные данные в файл формата «.csv» с 20 строки (так как Standard_Deviation рассчитывается с 21 строки). Последняя строка файла должна содержать заполненные колонки «updated», «Mining Difficulty» и обогащенных данных.
Должна быть предусмотрена возможность вывода всех данных в элемент «Data Table» в отдельной WinForms.
Класс должен называться «Data_Preparation» и иметь следующие функции:
«LoadData» - функция для загрузки данных из «.csv» файла.
«PrepareData» - функция для обработки и обогащения.
«ShowData» - public функция для вывода данных в DataTable.
3.3. Модуль «Прогнозирование с помощью ML»
Прогнозирование выполняется на языке программирования «R». Для прогнозирования используются алгоритмы линейной регрессии и градиентного бустинга. Изначально необходимо загрузить обогащенные данные из файла формата «.csv». Для применения описанных в теоретической части данной работы методов прогнозирования машинного обучения необходимо иметь обучающую выборку и тестовую выборку. Поскольку задача стоит дать прогноз на завтрашнее закрытие цены, следовательно тестовой выборкой будет являться весь файл с данными, за исключением последней строки. Тестовая выборка же будет представлять 1 последнюю строку загружаемого файла.
При прогнозировании и обучении алгоритмом линейной регрессии необходимо использовать следующие столбцы: X1st_zkolz_sredn + X2nd_zkolz_sredn + TrandChange + MiningDifficulty + Central_line + Standard_Deviation + Upper_Bound + Bottom_Bound + IndicatorOnTop + BottomIndicator + MovingAverageOscillators + IndicMov.
При прогнозировании и обучении алгоритмом градиентного бустинга необходимо использовать следующие столбцы: X1st_zkolz_sredn + X2nd_zkolz_sredn + TrandChange + MiningDifficulty + Central_line + Standard_Deviation + Upper_Bound + Bottom_Bound + IndicatorOnTop + BottomIndicator + MovingAverageOscillators + IndicMov.
Результат выполнения должен представлять файл в формате «.csv» с одной строкой и тремя столбцами: updated, GradientBoost_1, LinearReg_1. В updated записывается дата прогноза; в GradientBoost_1 записывается значение прогноза при использовании градиентного бустинга, в LinearReg_1 записывается значение прогноза при использовании линейной регрессии.
3.4. Модуль «Прогнозирование с помощью математических методов»
Необходимо реализовать следующие математические методы прогнозирования временных рядов:
- Комбинация скользящих средних.
- Полосы Боллинджера.
- Осцилляторы скользящих средних.
Предполагается реализация представленных методов с использованием языка программирования C#. Прогнозирование данными методами представляет построение трех отдельных графиков в отдельных WinForms.
График комбинаций скользящих средних состоит из трех кривых: 1 – кривая цен закрытия, 2 – кривая первой скользящей средней, 3 – кривая второй скользящей средней.
График полос Боллинджера состоит из трех кривых: 1 – кривая цен закрытия, 2 – кривая Upper_Bound, 3 – кривая Bottom_Bound.
График осцилляторов скользящих средних представляет собой столбчатую диаграмму. Данными для столбчатой диаграммы является разница первой скользящей средней и второй скользящей средней.
На главной форме необходимо дать пользователю возможность ввода горизонта построения графиков. На основании заданного горизонта, графики должны строиться на последних днях числа, введенного пользователем.
При заполнении горизонта, необходимо обработать ввод. Для ввода доступны только целые числа. Если число меньше единицы, или поле пустое, пользователь не должен иметь возможности построить графики.
3.4.1. Комбинация скользящих средних
Метод скользящего среднего заключается в том, что прогнозируемое значение вычисляется как среднее арифметическое по предыдущим данным (формула 9):
(9)
Необходимо отобразить 2 скользящих средних:
- Короткую (с окрестностью = b).
- Длинную (с окрестностью = v).
При пересечении скользящих средних, необходимо отобразить на графике планируемое изменение тренда.
Таким образом, необходимо создать класс MovingAverageMethod() со следующими методами:
Get_data(); - для получения списка со значениями временного ряда и со значениями окрестностей двух скользящих средних.
Calculate_line1(); - для расчета короткой скользящей средней и хранения рассчитанных данных в списке.
Calculate_line2(); - для расчета длинной скользящей средней и хранения рассчитанных данных в списке.
Calculate_X(); - для определения точек пересечения скользящих средних.
Print_Graph(); - для вывода исходного временного ряда, и скользящих средних.
Clean_Graph(); - для очистки графа.
Пример построенного графа изображен ниже на рис. 3.2:
Рисунок 3.2 Пример использования комбинации скользящих средних
3.4.2. Полосы Боллинджера
Алгоритм рассчитывается по следующим формулам (формулы 10-13):
(10)
(11)
(12)
(13)
где:
d – отклонение от скользящего среднего
Pi – значение цены в заданной точке
MAi – значение скользящего среднего в заданной точке
n – число слагаемых
– стандартное отклонение
LB(low bound) – нижняя граница области
UB(up bound) – верхняя граница области
При выявлении сигнала, необходимо отобразить сигнал в графическом виде на общем графике.
Таким образом, необходимо создать класс BollingerBands() со следующими методами:
Get_data(); - для получения списка со значениями временного ряда.
Calculate_line1(); - для расчета скользящей средней и хранения рассчитанных данных в списке.
Calculate_UpLine(); - для расчета верхней границы области и хранения рассчитанных данных в списке.
Calculate_DownLine(); - для расчета нижней границы области и хранения рассчитанных данных в списке.
Define_Signal(); - для нахождения сигнала.
Print_Graph(); - для вывода графов.
Clean_Graph(); - для очистки графа.
Пример построенного графа изображен на рис. 3.3.
Рисунок 3.3 Полосы Боллинджера
3.4.3. Осцилляторы скользящих средних
MACD представляет собой разность двух скользящих средних (короткого с окрестностью сглаживания n1 и длинного с окрестностью сглаживания n2 > n1). Разность строится в открытой шкале околонулевой линии. Точки на нулевой линии соответствуют ситуациям, при которых скользящие средние пересекаются.
Скользящие средние необходимо строить, используя следующую формулу (формула 14):
(14)
На первом графике необходимо отобразить 2 скользящих средних:
- Короткую (с окрестностью = b)
- Длинную (с окрестностью = v)
На втором графике необходимо отобразить MACD (т.е. разность двух скользящих средних).
Таким образом, необходимо создать класс MovingAveragesOscillators() со следующими методами:
Get_data(); - для получения списка со значениями временного ряда и со значениями окрестностей двух скользящих средних.
Calculate_line1(); - для расчета короткой скользящей средней и хранения рассчитанных данных в списке.
Calculate_line2(); - для расчета длинной скользящей средней и хранения рассчитанных данных в списке.
Calculate_MACD(); - для расчета разницы между короткой и длинной скользящей средней.
Print_Graph_1(); - для вывода исходного временного ряда, и скользящих средних.
Print_Graph_2(); - для вывода графа MACD.
Clean_Graph(); - для очистки обоих графов.
Пример построенного графа изображен на рис. 3.4.
Рисунок 3.4 Осциллятор MACD
Запуск ИС инициирован двойным нажатием на левую кнопку мыши по иконке ИС. При запуске открывается окно, в котором пользователю представляется выбор:
- Загрузить данные.
- Вывести загруженные данные.
- Применить машинное обучение.
- Комбинация скользящих средних.
- Полосы Боллинджера.
- Осцилляторы скользящих средних.
При нажатии на соответствующую кнопку открывается дополнительное окно WinForms с результатом выполнения выбранного метода.
Пока данные не загружены, кнопки с методами заблокированы для пользователя.
3.6. Выводы по главе
В данной главе были определены требования, предъявляемые к разрабатываемой информационной системе, определены инструменты проектирования и дано описание реализации выбранных на предыдущем этапе методов. Также рассмотрена структура разрабатываемой информационной системы.
Основываясь на требованиях, приведенных в текущей главе было разработано Техническое задание в соответствии с ГОСТ 34.602 – 89. Согласно техническому заданию в дальнейшем будет разработан прототип информационной системы, проведено тестирование, на основании которого будут сделаны выводы, относительно применимости данной системы как дополнительного инструмента аналитики трейдера.
Глава IV. Проектирование прототипа ИС
В данной главе будет описан процесс проектирования информационной системы прогнозирования финансовых временных рядов. Пошагово описаны процессы создания форм и их функционала. Также будет проведено тестирование прототипа информационной системы. Согласно результатам тестирования, будут сделаны выводы о применимости ИС при техническом анализе.
Диаграмма классов
Классы и методы подробно описаны в Техническом задании (приложение А). Для того чтобы связать WinForms MS Visual Studio c RScript необходим класс Connector. Данный класс представляет собой модуль, инициирующий запуск RScript по нажатию на кнопку WinForm и возвращающий результат применения методов машинного обучения. Диаграмма классов представлена на рис. 4.1.
Рисунок 4.1 Диаграмма классов
Проектирование главной формы
Приложение состоит из Windows Forms. Основная форма содержит кнопки для вызова соответствующего функционала и окно для ввода горизонта вывода графиков. Также предусмотрены проверки для корректной работы приложения, т.е. пока не введены данные, у пользователя нет возможности построить графики, задать горизонт, применить алгоритмы ML.
После загрузки данных, доступна кнопка вывода загруженных и обогащенных данных. На этапе загрузки, происходит обогащение данных и запись данных в файл формата «.csv». Ниже, на рис. 4.2 представлен скриншот главной формы прототипа ИС.
Рисунок 4.2 Главная форма прототипа ИС
Загрузка и сохранение данных
После загрузки данных становится доступна кнопка вывода данных. Вывод данных осуществляется в отдельное окно (отдельную форму) в элемент DataTable. Ниже на рис. 4.3- 4.4 представлены скриншоты главной формы и вывода данных прототипа ИС.
Рисунок 4.3 Главная форма после загрузки данных
Рисунок 4.4 Форма вывода загруженных и обогащенных данных
Применение методов ML
При загрузке прототипа ИС открывается два окна: окно главной формы и окно загрузки обогащенных данных для применения методов ML. Соответственно необходимо для применения методов ML после загрузки данных открыть во втором окне файл с обогащенными данными. Далее параллельно будут выполняться алгоритмы ML. Ниже, на рис. 4.5, представлен скриншот окна загрузки обогащенных данных:
Рисунок 4.5 Окно загрузки обогащенных данных для выполнения методов ML
После выполнения алгоритмов ML, данные с результатом будут автоматически сохранены в файл формата «.csv». Для отображения результатов необходимо на главной форме нажать кнопку «Применить машинное обучение», при нажатии происходит загрузка файла с результатами и вывод результатов на главную форму. Пример вывода результатов применения алгоритмов машинного обучения представлен на рис. 4.6.