Как обычно, обновиться, тем у кого уже есть, или установить тем, у кого еще нет, можно командой в консоли R:
install.packages("rusquant", repos="http://R-Forge.R-project.org")
Тиковые данные, к сожалению, доступны лишь за два последних дня. Это ограничение Finam, вообще там есть и другие ограничения, так что не удивлюсь, если через некоторое время этот код перестанет работать, пишите, если что.
Для получения тиковых данных можно воспользоваться знакомой функцией getSymbols()
> library(rusquant) > getSymbols("SBER", from=Sys.Date()-1, src="Finam", period="tick") [1] "SBER" > SBER[1:5] SBER.Close SBER.Volume 2011-09-14 09:59:59 79.24 30 2011-09-14 09:59:59 79.24 30 2011-09-14 09:59:59 79.24 10 2011-09-14 09:59:59 79.24 20 2011-09-14 09:59:59 79.24 500
Сразу отмечу, что вызов выполняется достаточно долго, т.к. объем получаемых данных очень большой. Для удобства, сохранена система именования OHLC данных. Т.е. цены можно получить всё той же функций Cl, а объем Vo.
Если же есть необходимость преобразовать тиковые данные в OHLC, то нет ничего проще, в модуле xts для этого есть ряд удобных функций типа to.minutes, to.hourly, to.minutes10 и более общая функция to.period
> to.period(SBER, "mins", k=5) SBER.Open SBER.High SBER.Low SBER.Close SBER.Volume 2011-09-14 09:59:59 79.24 79.24 79.24 79.24 287520 2011-09-14 10:04:58 79.47 79.68 79.11 79.52 4042460 2011-09-14 10:09:59 79.52 79.66 79.34 79.35 3095280
Доступные значения периодов: “secs”, “seconds”, “mins”, “minutes”, “hours”, “days”, “weeks”, “months”, “quarters”, и “years”. Хотя, я сомневаюсь, что последними кто-то будет пользоваться. k=5 - показывает какое количество периодов объединять в группу. В данном примере мы получили пятиминутные данные.
большое спасибо за вашу либу) благодаря ей я начал любить R. есть вопрос. может это бага. частенько при закачивании больших объемов итковых данных с финама возникает такая ошибка: "Ошибка в if (ss == "") break : аргумент нулевой длины". и данные не закачиваются. подскажите куда рыть, в чем может быть проблема. спасибо
ReplyDeleteСергей, обычно это значит что либо имя бумаги неверное, либо временной интервал слишком большой, либо данных для этого временного интервала нет. Я подумаю, как можно сделать сообщения об ошибках вменяемыми.
DeleteА есть ли возможность импортировать тики прямо с ртс. Например вот отсюда http://ftp.rts.ru/pub/FORTS/pubstat/
ReplyDeleteПока такой возможности нет, но спасибо за ссылку, я посмотрю что можно сделать!
Deleteспасибо за модуль! удобно!
ReplyDeleteДобрый день, Сергей. Хотелось бы узнать, как можно или можно ли из котировок достать одну колонку (например Close) и сделать из нее одномерный ряд?
ReplyDeleteСпасибо за удобный модуль
Андрей
SergE добрый день Сергей. Почему бы не заменить finam на mfd?
ReplyDeletemfd дает качать данные за месяц.
в mfd нет ошибок в данных (т.е. там все данные верны)
к тому же он гораздо реже лежит в отключке чем финам.
Добавил возможность скачивать с сайта mfd.ru ))
ReplyDeleteНа данный момент все детали обновления (и примеры использования загрузки данных с mfd.ru) здесь: http://r-group.mifit.ru/
Вопросы можно задавать на почту arbuzov1989@gmail.com.
В будущем надеюсь загрузим обновление на r-forge.
В связи с удалением пакета Defaults с CRANa возникла проблема установке пакета rusquant.
ReplyDeleteПоправил проблему. На данный момент актуальные исходники находятся на r-forge но пока еще не собранные.
Исправленную версию пакета можно установить из zip архива:
https://www.dropbox.com/sh/rbx294u738m26c8/AAB-bVB5VjLrD6NQT9-872hqa?dl=0 (ссылка на архив)
Добрый день, при попытке использования вашего пакета выдает следующую ошибку:
DeleteError in data.frame(names, res, markets) :
arguments imply differing number of rows: 12012, 12013