Isso realmente não é uma questão estatística (talvez isso possa ser movido para SO?), Mas há uma boa função no quantmod que faz o que Dirk fez manualmente. Veja getQuote()e yahooQF(). A digitação yahooQF()exibirá um menu com todos os formatos de cotação possíveis que você pode usar.
Obrigado pela sua resposta. Sou bastante novo aqui no stackexchange. Como posso mover minha pergunta para SO?
1716 Steven
@ Steven: De nada. Não tenho certeza de como mover perguntas; Eu acho que os moderadores podem fazer isso.
Joshua Ulrich
15
Isso é bastante fácil, pois o R pode ler diretamente um determinado URL. A chave é simplesmente saber como formar a URL. Aqui está um exemplo rápido e sujo, baseado no código que Dj Padzensky escreveu no final dos anos 90 e que eu tenho mantido no módulo Perl Yahoo-FinanceQuote (que é claro também no CPAN aqui ) por quase tanto tempo.
Se você souber um pouco de R, o código deve ser auto-explicativo. Obter documentação para a string de formato é um pouco mais complicado, mas por exemplo, o módulo Perl possui alguns.
A coluna três é o seu último negócio. Durante o horário de mercado aberto, você receberá menos NAs e mais variabilidade de dados. Porém, observe que a maioria dos preços está atrasada em 15 ou 20 minutos - mas alguns índices são em tempo real. Os dados em tempo real são um grande negócio e uma grande receita para as trocas, portanto eles tendem a não divulgá-los. Além disso, e se bem me lembro, as exibições mais recentes e em tempo real nas páginas de Finanças do Google e Yahoo usam algo mais AJAXy que é mais difícil de ordenhar do lado de fora.
isso não funcionou para mim hoje, não consegui baixar o índice composto da Nasdaq antes de 2001, de minhas fontes de dados habituais (Quandl e quantmod) por algum motivo, e estava procurando alternativas.
PatrickT
4
Aqui está uma pequena função que escrevi para reunir e traçar dados em "pseudo-tempo real" do 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)})}
Obrigado por este script, No entanto, estou tendo um problema bobo com um "}". Não consigo executá-lo :(
@acabahe Ainda funciona bem para mim. Certifique-se de pegar tudo, desde require(quantmod)a trilha }sozinha na última linha. Você precisará esperar pelo menos 5 minutos antes de ver um gráfico aparecer.
Respostas:
Isso realmente não é uma questão estatística (talvez isso possa ser movido para SO?), Mas há uma boa função no quantmod que faz o que Dirk fez manualmente. Veja
getQuote()
eyahooQF()
. A digitaçãoyahooQF()
exibirá um menu com todos os formatos de cotação possíveis que você pode usar.fonte
Isso é bastante fácil, pois o R pode ler diretamente um determinado URL. A chave é simplesmente saber como formar a URL. Aqui está um exemplo rápido e sujo, baseado no código que Dj Padzensky escreveu no final dos anos 90 e que eu tenho mantido no módulo Perl Yahoo-FinanceQuote (que é claro também no CPAN aqui ) por quase tanto tempo.
Se você souber um pouco de R, o código deve ser auto-explicativo. Obter documentação para a string de formato é um pouco mais complicado, mas por exemplo, o módulo Perl possui alguns.
A coluna três é o seu último negócio. Durante o horário de mercado aberto, você receberá menos NAs e mais variabilidade de dados. Porém, observe que a maioria dos preços está atrasada em 15 ou 20 minutos - mas alguns índices são em tempo real. Os dados em tempo real são um grande negócio e uma grande receita para as trocas, portanto eles tendem a não divulgá-los. Além disso, e se bem me lembro, as exibições mais recentes e em tempo real nas páginas de Finanças do Google e Yahoo usam algo mais AJAXy que é mais difícil de ordenhar do lado de fora.
fonte
Aqui está uma pequena função que escrevi para reunir e traçar dados em "pseudo-tempo real" do yahoo:
Produz gráficos como este:
Você também pode usar os dados para outros fins.
fonte
require(quantmod)
a trilha}
sozinha na última linha. Você precisará esperar pelo menos 5 minutos antes de ver um gráfico aparecer.fonte