Самый известный пакет для работы с финансовыми данными в R - это quantmod. Он позволяет получать данные из различных источников, строить, и тестировать торговые модели.
Установка пакета в R производится с помощью команды:
> install.packages("quantmod")
Вместе с ним будут установлены также пакеты xts, zoo и TTR. Первые два предоставляют продвинутые средства для работы с временными рядами, а TTR - это большой набор технических индикаторов.
Перед использованием пакета необходимо загрузить его в R с помощью команды:
> library(quantmod)
Quantmod позволяет получать данные из следующих источников:
- Google Finance (цены открытия, максимумы дня, минимумы, цены закрытия и объёмы);
- Federal Reserve Bank of St. Louis FRED®;
- Oanda (FOREX и металлы, только цены закрытия);
- локальные базы данных MySQL;
- двоичные файлы R (.RData и .rda);
- текстовые файлы CSV.
Получим данные по некоторым активам:
# котировки Google c google finance
> getSymbols("GOOG",src="google")
[1] "GOOG"
# котировки Yahoo с google finance
> getSymbols("YHOO",src="google")
[1] "YHOO"
[1] "YHOO"
Данные по котировкам теперь хранятся в объектах типа xts. Можно также посмотреть, какие конкретно данные мы скачали, по заголовкам столбцов:
> class(GOOG)
[1] "xts" "zoo"
[1] "xts" "zoo"
> colnames(GOOG)
[1] "GOOG.Open" "GOOG.High" "GOOG.Low" "GOOG.Close" "GOOG.Volume" "GOOG.Adjusted"
[1] "GOOG.Open" "GOOG.High" "GOOG.Low" "GOOG.Close" "GOOG.Volume" "GOOG.Adjusted"
Для того, чтобы не вводить каждый раз информацию об источнике получения данных, можно сохранить эту информацию с помощью функции setSymbolLookup:
> setSymbolLookup(YHOO='google',GOOG='google')
> setSymbolLookup(XPTUSD=list(name="XPT/USD",src="oanda"))
> setSymbolLookup(XPTUSD=list(name="XPT/USD",src="oanda"))
Теперь сохраняем наши предпочтения в файл:
> saveSymbolLookup(file="mysymbols.rda")
В следующей сессии мы сначала загружаем из файла наши предпочтения, затем скачиваем требуемые данные:
> loadSymbolLookup(file="mysymbols.rda")
> getSymbols(c("YHOO","GOOG","XPTUSD"))
> getSymbols(c("YHOO","GOOG","XPTUSD"))
[1] "YHOO" "GOOG" "XPTUSD"
Можно указывать за какой конкретный промежуток времени нам нужны котировки:
> getSymbols("GOOG",src="yahoo", from="2014-01-01", to="2015-01-01")
[1] "GOOG"
Для построения графиков скачанных нами котировок используется функция chartSeries(), кроме того, для нее имеются обертки, позволяющие явно указать нужный нам тип графика (lineChart,barChart и candleChart). Для котировок по умолчанию используются свечи:
> chartSeries(GOOG)
Теперь, возьмем, например, Майкрософт. И давайте заодно сменим оформление графика, так как темные цвета нагоняют тоску, бычьи свечи сделаем зелеными, а медвежьи - красными:
> getSymbols("MSFT",src="yahoo")
[1] "MSFT"
> chartSeries(MSFT, theme="white", up.col='green', dn.col='red')
Выберем только первый квартал 2014 года:
> chartSeries(MSFT["2014-01/2014-03"], theme="white", up.col='green', dn.col='red')
Слэш используется для "отсечения" временных промежутков. Например, мы можем просмотреть все данные в нашем наборе до 20 января 2007 года:
> MSFT["/2007-01-20"]
MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume MSFT.Adjusted
2007-01-03 29.91 30.25 29.40 29.86 76935100 24.60428
2007-01-04 29.70 29.97 29.44 29.81 45774500 24.56308
2007-01-05 29.63 29.75 29.45 29.64 44607200 24.42300
2007-01-08 29.65 30.10 29.53 29.93 50220200 24.66196
2007-01-09 30.00 30.18 29.73 29.96 44636600 24.68668
2007-01-10 29.80 29.89 29.43 29.66 55017400 24.43948
2007-01-11 29.76 30.75 29.65 30.70 99464300 25.29643
2007-01-12 30.65 31.39 30.64 31.21 103972500 25.71666
2007-01-16 31.26 31.45 31.03 31.16 62379600 25.67546
2007-01-17 31.26 31.44 31.01 31.10 58519600 25.62602
2007-01-18 31.15 31.37 30.80 31.00 56364300 25.54362
2007-01-19 30.73 31.11 30.69 31.11 75826900 25.63426
Дневные данные можно преобразовать в недельные с помощью функции to.weekly:
> chartSeries(to.weekly(MSFT["2013/2014"]), theme="white", up.col='grey',dn.col='blue')
Для получения данных по ценам на металлы с Oanda используется функция getMetals. Давайте посмотрим цены на золото за последний год:
> getMetals("XAU", from = Sys.Date() - 365)
[1] "XAUUSD"
> chartSeries(XAUUSD, theme="white")
Можно также получать данные с Oanda по курсам валют с помощью функции getFX():
> getFX("EUR/USD", from = "2013-01-01")
[1] "EURUSD"
> chartSeries(EURUSD, theme="white")
Технический анализ
Как уже говорилось ранее, для технического анализа используется пакет TTR, который содержит огромное количество различных индикаторов. Мы приведем пример использования только для нескольких наиболее распространенных.
Строим график для Microsof и добавляем на него индикатор MACD и каналы Боллинджера:
chartSeries(MSFT["2014-01/2014-06"], theme="white", up.col='green', dn.col='red')
addMACD()
addBBands()
Комментариев нет:
Отправить комментарий