Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Создание, тестирование и оптимизация торговых систем с использованием программы Metastok и языка R. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Рис. 24. Диалоговое окно Organizer
Рассмотрим пример импорта (экспорта) индикатора. Для этого необ-
ходимо:
Выполнить команду системного меню Tools, выбрать Indicator
1.
Builder
.
2.
В появившемся диалоговом окне Indicator Builder нажать
Organizer.
В окне Formula Organizer Wizard (рис. 24) выбрать Import
3.
formula files
файл (
Export formula files – для экспорта формул из файла в MetaStock).
Нажать кнопку Next.
4.
Для
, если Вы хотите импортировать формулы из MetaStock в
импортирования необходимо:
1. В окне Choose Source Folder" в поле Folder указать путь к файлам.
2. Нажать кнопку
Для
экспортирования необходимо:
Finish.
1. В окне Select Custom Indicators" выбрать из списка необходи-
мые функции и/или индикаторы.
2. Нажать кнопку
3. В окне
Select System Tests выбрать из списка необходимые си-
Next.
стемы.
4. Нажать кнопку
5. В окне
Select Explorations выбрать из списка необходимые
Next.
фильтры.
6. Нажать кнопку
7. В окне
Select Experts выбрать из списка необходимые советники.
Next.
31
8. Нажать кнопку Next. В окне Creat Self-Extracting Install Вы мо­жете дополнительно указать, каким образом будут экспортированы фор­мулы. При выборе опции Да будет создан файл "FOSetup.exe". В даль­нейшем, при импорте формул, загружать MetaStock не потребуется. Все необходимые действия будут выполнены при запуске "FOSetup.exe". При выборе опции Нет формулы будут экспортированы обычным спосо- бом.
В дальнейшем при импорте необходимо будет воспользоваться
стандартной процедурой MetaStock для импорта формул.
9. Нажать кнопку Next.
10. В окне Choose Destination Folder в поле Folder указать путь для сохранения файлов.
11. Нажать кнопку Next.
12. В окне Password Protect, если необходимо, ввести пароль.
13. Нажать кнопку Finish.
32
Задания для самостоятельной работы
1. Создайте пользовательский индикатор, который будет вычис­лять среднюю цену (Median Price) по правилу: (high + low) / 2. Наложите созданный индикатор на график цены.
2.
Используя формулы, создайте пользовательский индикатор По-
лосы Боллинжера (Bollinger Bands) и сравните результаты со встроенным индикатором:
mov( C, 20, S ) + ( 2 * stdev( C, 20 ))
mov( C, 20, S ) - ( 2 * stdev( C, 20 ))
Постройте технический индикатор – «Ценовой осциллятор» (Price
3. Oscillator) по формуле: mov(С, 10, E) - mov(С, 20, E). Постройте его гра­фик, а затем экспортируйте построенный индикатор в виде файла.
Создайте фильтр «Прорыв объема и цены» (Price and Volume
4. Breakout), который будет выбирать акции, цены которых за последнюю
торговую сессию выросли более чем на 5 % при росте объема как мини­мум на 10 % от среднего значения за 50 предыдущих торговый сессий.
Постройте пользовательский индикатор по формуле
5. BarsSince(BBandTop(C,20,S,2)-BBandBot(C,20,S,2)<50), постройте гра-
фик для этого индикатора в дополнительном окне и приведите интерпре­тацию поведения индикатора.
Постройте индикатор по формуле If(C>BBandTop(C,20,S,2),1,-1),
6.
выведите график поведения индикатора в отдельном окне и объясните, по какому правилу индикатор принимает значения ±1.
Используя записи из дневника внутридневного трейдера (таб-
7.
лица), определите: 1) эффективность трейда (эффективность входа, вы­хода, итоговую эффективность); 2) сумму комиссионного вознагражде­ния брокера и биржи (тариф брокера 0,09 % от сделки, тариф биржи 0,1 % от сделки); 3) прибыль/убыток, проведенной сделки. Если максимальная цена за время нахождения в позиции была 152, минимальная – 112.
Эффективность торговых сигналов
Цена Эффективность, %
Вход в позицию 120
Выход из позиции 150
Итого по позиции
Постройте торговую систему, используя два встроенных индика-
8.
тора, протестируйте ее, установите стоп-ордера, проведите оптимизацию системы. Сравните построенную торговую систему с системой «Купил и
33
держи» (Buy & Hold). Если построенная система дает прибыль меньше, чем система «Купил и держи», то в систему следует ввести дополнитель­ные параметры и протестировать ее повторно.
Оформите отчет по результатам тестирования. Отчет должен со-
9. держать:
условия тестирования; принципы работы индикатора 1, индикатора 2; описание систем; формулы механических торговых систем; оптимизированные переменные; использование стоп-ордеров; результаты тестирования; отчеты по результатам тестирования (System Report); сравнение прибыльности системы со стратегией «Купил и Держи».
34
Раздел 2. Среда программирования R
2.1. Обзор возможностей языка R для работы с временными рядами
Язык R (http://www.r-project.org) – это язык программирования для статистической обработки данных и работы с графикой, а также свобод­ная программная среда вычислений с открытым исходным кодом. В ба­зовой поставке R поддерживаются основные математические операции и обеспечена возможность расширяемости функционала с помощью паке­тов. Пакеты представляют собой библиотеки для работы специфических функций или специальных областей
Кроссплатформенная система статистического анализа и визуализа­ции данных R состоит из следующих основных частей (Шитиков, 2014):
язык программирования высокого уровня R, позволяющий од-
ной строкой реализовать различные операции с объектами, векторами, матрицами, списками и т. д.;
большой набор функций обработки данных, собранных в отдель-
ные пакеты (package);
развитая система поддержки, включающая обновление компо-
нентов среды, интерактивную помощь и различные образовательные ре­сурсы, предназначенные как для начального изучения R, так и последу­ющих консультаций по возникающим затруднениям.
Под термином package (пакет) будем понимать совокупность функ­ций, html-страниц руководства пользователя и примеров объектов данных, предназначенных для тестирования или обучению работы. Термин (библиотека) определяет директорию, которая может содержать один или несколько пакетов. Функции (function objects) – это поименованные про­граммы, предназначенные для создания новых объектов или выполнения определенных действий над ними. Объекты, предназначенные для хране- ния данных (data objects), – это отдельные переменные, векторы, матрицы и массивы, списки, факторы, таблицы данных.
Вектор (упорядоченный набор значений) создаётся с функции
c() (от англ. concatenate – сцепить, объединить):
применения.
library
помощью
a <- c(1, 2, 5, 8, 10, 12:23)
Список отличается от вектора тем, что элементами списка могут быть не только атомарные значения, но также другие списки, т. е. этот тип данных является рекурсивным. Список создаётся с помощью функ-
list():
ции
y <- list(1:3, "str1", T, list("a", "b", F))
35
Матрица (двумерный массив) создаётся с помощью функции
matrix(). По умолчанию элементы в матрице располагаются по столб-
цам:
b <- matrix(1:12, 3, 4)
Фрейм данных (Data Frame) – это двумерный массив (таблица) с
именованными столбцами. Фрейм создаётся с помощью функции
data.frame():
n <- c(2, 3, 5);
s <- c("abc", "bca", "cbdac");
b <- c(TRUE, FALSE, TRUE)
df <- data.frame(n, s, b)
В базовой комплектации R имеется целое семейство функций, пред­назначенных для организации векторизованных вычислений над матри­цами, списками и таблицами данных. Создадим квадратную матрицу M и найдем минимальные значения в каждой строке матрицы:
M <- matrix(seq(1,16), 4, 4)
apply(M, 1, min)
В R используется интерфейс командной строки, для удобства ра­боты можно использовать интегрированные среды разработки (IDE) c графическим интерфейсом пользователя, например настольное приложе­ние RStudio. Кроме этого, возможно исполнение скрипта на языке R он­лайн (https://rdrr.io/snippets/).
Общий алгоритм работы в R/RStudio можно представить следую-
щим образом:
загрузка данных и необходимых предварительно установленных
пакетов;
проведение визуализации и анализа исходных данных;
автоматизация работы, создание и оптимизация торговых стра-
тегий;
сохранение результатов работы, полученных во время сессии R.
Язык программирования R поддерживает основные форматы фай­лов операционной системы (*.txt, *.csv). Для чтения и записи специаль­ных форматов (например, DBF, SPSS, DTA, Stata) можно установить до­полнительные пакеты, например,
foreign.Для установки этого пакета
достаточно выполнить команду:
install.packages("foreign")
Для просмотра списка установленных пакетов в консоли достаточно
выполнить команду rownames(installed.packages()).
36
При запуске R/RStudio загружаются только базовые пакеты. Для инициализации любого другого пакета перед непосредственным ис­пользованием его функций нужно ввести команду
library(<имя_па-
кета>).
Для работы с временными рядами реализовано множество пакетов, отличающихся функционалом. Кратко приведем описание пакетов, кото­рые будем использовать при дальнейшем изложении материала.
Пакет
quantmod предназначен для получения котировок из раз-
личных источников, а также для визуализации исходных финансовых временных рядов. Пакет
quantmod обеспечивает онлайн- и офлайн- до-
ступ к финансовым временным рядам в формате xts.
Пакет ектами класса
xts предназначен для работы с временными рядами как объ-
xts (eXtensible Time-Series).
В пакете TTR реализованы основные индикаторы для проведения технического анализа.
Пакет
quantstrat – используется для тестирования торговых
стратегий.
Пакет
fPortfolio – для формирования портфелей ценных бумаг,
вычисления характеристик портфеля (эффективная граница, меры риск и т. д.), анализа доходности портфельных инвестиций (Wurtz, 2009).
Пакет
PortfolioAnalytics – предназначен для моделирования
и визуализации решения задачи портфельного инвестирования. Пакет
PortfolioAnalytics предоставляет возможность задавать различ-
ные типы ограничений и целевых функций. Для поиска оптимального портфеля пакет
PortfolioAnalytics поддерживает различные ме-
тоды решения задачи оптимизации, которые могут быть сформулирована как задачи линейного и нелинейного программирования.
Более детальная классификация R-пакетов для проведения матема­тического моделирования финансовых временных рядов (копулярные модели, моделирование Монте-Карло, оптимизация, робастность, про­гнозирование, технический анализ, визуализация) приведена в моногра­фии (Pfaff, 2016, c. 378).
RStudio можно выделить любую функцию и нажать клавишу F1
В для получения подсказки. Кроме того, имеются функции подсказки для командной строки:
help(Имя) или ?Имя. В R cимвол # означает, что
оставшаяся часть строки содержит комментарий (невыполняемый код).
37
2.2. Знакомство с графическим интерфейсом пользователя RStudio
В основе графического интерфейса пользователя среды разработки
RStudio лежит стандартный графический интерфейс операционной си-
стемы Windows/Mac. Доступ к функциям осуществляется с помощью глав­ного и контекстного меню, инструментальных панелей, диалоговых окон и т. д. В среде RStudio пользователь может работать с несколькими окнами одновременно как с одним целым. Для начала работы со средой RStudio необходимо:
Нажать кнопку Пуск и далее Программы – RStudio – RStudio
1.
или выбрать иконку на рабочем столе.
После запуска программы необходимо загрузить исходный файл
2. (*.r), сохраненный на диске, с помощью команды создать новый рабочий файл с помощью команды
Script
. На рабочем столе отобразится основное окно (рис. 25).
File – Open File… или
File – New File – R
Рис. 25. Графический интерфейс пользователя RStudio
В верхней части окна расположено основное меню, через которое можно выполнить любую команду, заложенную в программу: меню команд управления файлами, гации по исходным кодам, основного окна,
Plots – меню команд работы с графиками, Session – меню
View – меню команд управления интерфейсом
Edit – Code – меню команд для нави-
38
File –
команд для управления настройками текущей сессии, Build – меню ко­манд для управления настройками проектов RStudio, манд для проведения отладки исходного кода, профилизации исходного кода, тельных инструментов,
Help – доступ к справочной системе.
Tools – меню команд вызова вспомога-
Profile – меню команд для
Debug – меню ко-
В верхней части рабочего экрана (рис. 25) расположена горизонталь-
ная панель инструментов
ToolBar. С ее помощью, например, можно от-
крыть или сохранить файл с исходным кодом.
Основное рабочее пространство среды RStudio разделено на четыре
части
Source, Console, History, Packages.
RStudio поддерживает выполнение кода непосредственно из окна
Source. Выполняемые команды отправляются в Console, где появляется
также результат их выполнения. При выполнении команд вывод резуль­татов может быть осуществлен в графическом виде (график, гисто­грамма) в отдельное графическое окно или файл. Во время работы RStudio создает базу данных всех команд, которые пользователь вводит
Console. Имеется возможность просмотра этой базы данных при по-
в мощи панели предусмотрено окно
History. Для управления дополнительными пакетами
Packages.
Среда RStudio предоставляет стандартные возможности текстового редактора с исходным кодом. Это копирование и удаление с использова­ние возможностей буфера обмена. Для этого можно использовать ко­манды меню
Edit или горячие клавиши операционной системы. Кроме
этого в RStudio реализована синтаксическая подсветка ключевых слов языка, поддерживается автоматическое завершение кода при помощи клавиши
Tab. Одним из преимуществ RStudio является встроенный
Viewer данных. Для настройки внутренних окон и закладок на них можно
воспользоваться командой из главного меню
Pane Layout
.
Tools – Global options –
2.3. Загрузка данных в программу R/Rstudio
Для работы в R/RStudio обычно используют файлы с расширением *.txt, в которых значения переменных разделены знаками табуляции (tab­delimited files), а также файлы с расширением *.csv (comma separated values), в которых значения переменных разделены запятыми. При этом це-
лая и дробная действительных переменных (double) разделена точкой.
Файл с данными рекомендуется явно указать рабочую директорию программы, т.е. папку, из которой R по умолчанию будет загружать дан­ные. Для этого нужно выполнить команду
setwd("D:/My_R_Project")
39
Для того чтобы выяснить путь к рабочей директории R на своем ком­пьютере, используйте команду getwd().
Основной функцией для импортирования данных в рабочую среду R является
read.table(). Эта мощная функция позволяет достаточно
тонко настроить процесс загрузки внешних файлов, в связи с чем она имеет большое количество управляющих аргументов. Для вызова файла помощи достаточно выполнить команду ?read.table.
Для загрузки файла
MyData.txt, который хранится в рабочей ди-
ректории R, достаточно выполнить команду
MyTS <- read.table(file =
"MyData.txt", header = TRUE)
Для загрузки файла *.csv предназначена функция read.csv(), ко­торая работает аналогично. Если файл с данными хранится не в рабочей директории, то нужно явно установить значение аргумента file функциях
read.table() и read.csv(). При этом пользователям операцион-
ных систем Windows необходимо помнить, что для указания полных пу­тей к файлам в программе R используется прямой одинарный (
/) либо
двойной обратный слеш (\\).
Для загрузки файла с данными в RStudio можно использовать ко­манду меню
File – Import Dataset, далее выбрать тип файла и в диалого-
вом режиме указать необходимые параметры.
В качестве ресурсов для онлайн-загрузки данных можно использовать:
Yahoo Finance (http://finance.yahoo.com/);
Quandl (http://www.quandl.com/);
Google Finance (http://www.google.com/finance);
Federal Reserve Bank of St. Louis(http://research.stlouisfed.org/fred2/).
Для загрузки котировок акций компании
Microsoft (MSFT) с сервера
Yahoo Finance можно в консоли выполнить следующие команды:
library(quantmod)
getSymbols("MSFT", src = "yahoo")
Для загрузки с сервера Federal Reserve Bankследует использовать команду
getSymbols("MSFT", src = "FRED")
Для работы с данными российских бирж, надо установить библио­теку
rusquant. Для загрузки котировок индекса РТС за последний год
с сервера
Финам (finam.ru)следует выполнить команды:
library(rusquant)
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]