Я хотел бы импортировать курс акций «Последняя сделка» из финансов Yahoo в R. Намерение - работать с (почти) данными в реальном времени. Есть ли какие-то решения?
Это на самом деле не вопрос статистики (возможно, его можно перенести в SO?), Но в Quantmod есть замечательная функция, которая делает то, что Дирк делал вручную. Смотрите getQuote()и yahooQF(). При вводе yahooQF()появится меню всех возможных форматов цитат, которые вы можете использовать.
Спасибо за ваш ответ. Я довольно новичок здесь, в stackexchange. Как я могу перенести мой вопрос на SO?
Стивен
@ Стивен: Всегда пожалуйста. Я не уверен, как перенести вопросы; Я думаю, что модераторы могут это сделать.
Джошуа Ульрих
15
Это довольно легко, учитывая, что R может читать непосредственно с данного URL. Ключ должен просто знать, как сформировать URL. Вот быстрый и грязный пример, основанный на коде, который Dj Padzensky написал в конце 1990-х, и который я поддерживаю в модуле Perl Yahoo-FinanceQuote (который, конечно же, и здесь на CPAN ) почти так же долго.
Если вы знаете немного R, код должен быть понятен. Получить документацию для строки формата немного сложнее, но, например, в модуле Perl есть некоторые.
Третий столбец - ваша последняя сделка. В часы работы на открытом рынке вы получите меньше NA и большую изменчивость данных. Но учтите, что большинство цен задерживаются на 15 или 20 минут - но некоторые индексы работают в режиме реального времени. Данные в реальном времени - это большой бизнес и основной доход для бирж, поэтому они, как правило, не отдают их. Кроме того, и, если я правильно помню, более новые и более отображаемые в реальном времени на страницах финансов в Google и Yahoo используют что-то более AJAXy, которое труднее добывать извне.
сегодня это не сработало, у меня не было возможности загрузить составной индекс Nasdaq, начиная с 2001 года, из моих обычных источников данных (Quandl и quantmod) по какой-то причине, и я искал альтернативы.
PatrickT
4
Вот небольшая функция, которую я написал, чтобы собрать и нанести на график данные «псевдо-реального времени» от Yahoo:
require(quantmod)Times<- NULL
Prices<- NULL
while(1){
tryCatch({#Load current quoteYear<-1970
currentYear <-as.numeric(format(Sys.time(),'%Y'))while(Year!= currentYear){#Sometimes yahoo returns bad quotes
currentQuote <- getQuote('SPY')Year<-as.numeric(format(currentQuote['Trade Time'],'%Y'))}#Add current quote to the datasetif(is.null(Times)){Times<-Sys.time()-15*60#Quotes are delayed 15 minutesPrices<- currentQuote['Last']}else{Times<- c(Times,Sys.time())Prices<- rbind(Prices,currentQuote['Last'])}#Convert to 1-minute barsData<- xts(Prices,order.by=Times)Data<- na.omit(to.minutes(Data,indexAt='endof'))#Plot the data when we have enoughif(nrow(Data)>5){
chartSeries(Data,theme='white',TA='addRSI(n=5);addBBands(n=5)')}#Wait 1 second to avoid overwhelming the serverSys.sleep(1)#On errors, sleep 10 seconds and hope it goes away},error=function(e){print(e);Sys.sleep(10)})}
Это производит диаграммы как это:
Вы также можете использовать данные для других целей.
Спасибо за этот скрипт, однако я получаю глупую проблему с "}", я не могу его запустить :(
@acabahe Это все еще хорошо для меня. Удостоверьтесь, что вы захватили все, от require(quantmod)самого конца }на последней строке. Вам нужно подождать не менее 5 минут, прежде чем вы увидите график.
Ответы:
Это на самом деле не вопрос статистики (возможно, его можно перенести в SO?), Но в Quantmod есть замечательная функция, которая делает то, что Дирк делал вручную. Смотрите
getQuote()
иyahooQF()
. При вводеyahooQF()
появится меню всех возможных форматов цитат, которые вы можете использовать.источник
Это довольно легко, учитывая, что R может читать непосредственно с данного URL. Ключ должен просто знать, как сформировать URL. Вот быстрый и грязный пример, основанный на коде, который Dj Padzensky написал в конце 1990-х, и который я поддерживаю в модуле Perl Yahoo-FinanceQuote (который, конечно же, и здесь на CPAN ) почти так же долго.
Если вы знаете немного R, код должен быть понятен. Получить документацию для строки формата немного сложнее, но, например, в модуле Perl есть некоторые.
Третий столбец - ваша последняя сделка. В часы работы на открытом рынке вы получите меньше NA и большую изменчивость данных. Но учтите, что большинство цен задерживаются на 15 или 20 минут - но некоторые индексы работают в режиме реального времени. Данные в реальном времени - это большой бизнес и основной доход для бирж, поэтому они, как правило, не отдают их. Кроме того, и, если я правильно помню, более новые и более отображаемые в реальном времени на страницах финансов в Google и Yahoo используют что-то более AJAXy, которое труднее добывать извне.
источник
Вот небольшая функция, которую я написал, чтобы собрать и нанести на график данные «псевдо-реального времени» от Yahoo:
Это производит диаграммы как это:
Вы также можете использовать данные для других целей.
источник
require(quantmod)
самого конца}
на последней строке. Вам нужно подождать не менее 5 минут, прежде чем вы увидите график.источник