Использование пакета rusquant для получения данных с сайта Finam

Для работы с данными российских бирж, надо установить пакет rusquant:

install.packages("rusquant", repos="http://R-Forge.R-project.org")

Если данный вариант не работает под Windows, то попробуйте так:

install.packages("rusquant", contriburl="http://r-forge.r-project.org/bin/windows/contrib/latest/")

После этого можно, например, скачать котировки фьючерса на индекс РТС:

library(rusquant)
getSymbols("SPFB.RTS", from="2013-01-01", src="Finam")
chartSeries(SPFB.RTS, theme="white")

Помимо дневных, доступны также и внутридневные данные с сайтов Финама и Московской биржи. Для примера построим пятиминутный график котировок акции ОАО “Сбербанк России” за последние 2 дня и добавим индикатор EMA с периодом 20 (рис. 1):

library(rusquant)
getSymbols("SBER", from=Sys.Date()-1, src="Finam", period="5min")
chartSeries(SBER, theme="white")
addEMA(n=20, col="blue")
../_images/rintro-04.png

Рис. 1. Пятиминутный график и скользящая средняя

Возможные значения параметра period:

1min, 5min, 10min, 15min, 30min, hour, day, week, month

Также доступны тиковые данные (загружаются достаточно долго):

getSymbols("SBER", from=Sys.Date(), src="Finam", period="tick")

Для проверки выведем в консоль первые 4 строки:

SBER[1:4]
                         SBER.Close    SBER.Volume
2014-11-07 09:59:59      75.16          60
2014-11-07 09:59:59      75.16         230
2014-11-07 09:59:59      75.16          10
2014-11-07 09:59:59      75.16         100

Тиковые данные можно упаковать в любой другой таймфрейм, например, в 15-минутный:

SBER_M15 <- to.period(SBER, "mins", k=15)
SBER_M15[1:3]
                      SBER.Open  SBER.High  SBER.Low   SBER.Close  SBER.Volume
2014-11-07 09:59:59   75.16      75.16      75.16      75.16         57810
2014-11-07 10:14:59   75.19      75.65      74.82      75.54       8570600
2014-11-07 10:29:55   75.48      75.55      75.21      75.28       2640270

Вместо mins можно писать secs, seconds, minutes, hours, days, weeks, months, quarters или years.

Заметим, что с сайта Финама можно загружать данные не только по российскому рынку, но также, например, котировки валют:

getSymbols("GBPUSD", from=Sys.Date(), src="Finam", period="5min")
GBPUSD["2014-11-07 17:00::2014-11-07 18:00"]
                         GBPUSD.Open GBPUSD.High GBPUSD.Low   GBPUSD.Close  GBPUSD.Volume
2014-11-07 17:00:00      1.5817      1.5827      1.5812       1.5823         12479
2014-11-07 17:05:00      1.5823      1.5826      1.5813       1.5825          5846
2014-11-07 17:10:00      1.5830      1.5840      1.5819       1.5822         13254
2014-11-07 17:15:00      1.5821      1.5831      1.5813       1.5826         12705
2014-11-07 17:20:00      1.5827      1.5835      1.5819       1.5832         11812
2014-11-07 17:25:00      1.5832      1.5836      1.5823       1.5835         10937
2014-11-07 17:30:00      1.5834      1.5837      1.5827       1.5834         11805
2014-11-07 17:35:00      1.5835      1.5836      1.5823       1.5831         10715
2014-11-07 17:40:00      1.5830      1.5842      1.5826       1.5839         12917
2014-11-07 17:45:00      1.5839      1.5842      1.5833       1.5835          9412
2014-11-07 17:50:00      1.5836      1.5844      1.5834       1.5843          9956
2014-11-07 17:55:00      1.5843      1.5851      1.5836       1.5841         13035
2014-11-07 18:00:00      1.5841      1.5847      1.5835       1.5840         12911

Часовики фьючерса E-mini S&P500 (тикер смотрим на сайте finam.ru, рис. 2):

ES <- getSymbols("MINISANDP500", from=Sys.Date(), src="Finam", period="hour", auto.assign=FALSE)
../_images/rintro-05.png

Рис. 2. Как узнать имя контракта на сайте finam.ru

Здесь мы отключили автоматическое именование загружаемого объекта и “насильно” присвоили результат загрузки переменной с именем ES. Чтобы переименовать также и столбцы набора данных, заменим все вхождения MINISANDP500 на ES с помощью функции gsub:

colnames(ES) <- gsub("MINISANDP500", "ES", colnames(ES))
ES[1:3]
                     ES.Open  ES.High  ES.Low   ES.Close   ES.Volume
2014-11-07 00:00:00  2026.42  2029.25  2026.37  2028.93       0
2014-11-07 01:00:00  2028.92  2028.98  2028.25  2028.25       0
2014-11-07 02:00:00  2027.42  2028.75  2027.25  2028.62       0

(продолжение следует...)

Ссылки:


Теги: Язык R




Комментарии (3)

Вы просматриваете: R
Facebookdel.icio.usStumbleUponDiggGoogle+Twitter
Gravatar
ProfiTraders говорит...
Илья,
Эту ошибку ещё в 2013 году нашли, но похоже, так и не исправили.
http://www.algorithmist.ru/p/rusquant.html
пофиксите сами, команда fix(getSymbols.Finam)
найдите строку
stock.URL <- paste(finam.URL, "p=", p, "&em=", Symbols.id,
и исправьте Symbols.id на gsub("&", "%26", Symbols.id)
чтобы заменить "&" на "%26" в строке адреса.
24th July 2016 9:10pm
Gravatar
Илья говорит...
Столкнулся с такой проблемой, при скачивании данных с Финама отраслевых тикеров (MICEXO&G, MICEXM&M) символ & распознается как выбор колонки, (Ошибка в `[.data.frame`(fr, , (5:9)) : undefined columns selected). Есть ли какой то способ на время отменить свойство этого символа?
24th July 2016 6:57am
Gravatar
Вячеслав говорит...
Создал страницу с подробным описанием основных возможностей пакета rusquant:
http://r-group.mifit.ru/?page_id=141
22nd January 2015 2:59pm
Страница 1 из 1

* Обязательные поля
(Не публикуется)
 
Жирный Курсив Подчеркнутый Перечеркнутый Степень Индекс Код PHP Код Кавычки Вставить линию Вставить маркированный список Вставить нумерованный список Вставить ссылку Вставить e-mail Вставить изображение Вставить видео
 
Улыбка Печаль Удивление Смех Злость Язык Возмущение Ухмылка Подмигнуть Испуг Круто Скука Смущение Несерьёзно Шокирован
 
1000
Captcha
Refresh
 
Введите код:
 
Запомнить информацию введенную в поля формы.