Ich möchte den "Last Trade" -Aktienkurs von Yahoo Finance in R importieren. Die Absicht ist, mit (fast) Echtzeitdaten zu arbeiten. Gibt es irgendwelche Lösungen?
Vielen Dank im Voraus für jeden hilfreichen Kommentar.
Das ist wirklich keine Statistik-Frage (vielleicht könnte dies nach SO verschoben werden?), Aber es gibt eine nette Funktion in quantmod , die das tut, was Dirk von Hand gemacht hat. Siehe getQuote()und yahooQF(). Wenn Sie tippen, yahooQF()wird ein Menü mit allen möglichen Anführungszeichenformaten angezeigt, die Sie verwenden können.
Vielen Dank für Ihre Antwort. Ich bin ganz neu hier bei StackExchange. Wie kann ich meine Frage nach SO verschieben?
Steven
@Steven: Gern geschehen. Ich bin mir nicht sicher, wie ich Fragen verschieben soll. Ich denke, Moderatoren können das schaffen.
Joshua Ulrich
15
Das ist ziemlich einfach, da R direkt von einer bestimmten URL lesen kann. Der Schlüssel ist einfach zu wissen, wie man die URL bildet. Hier ist ein schnelles und schmutziges Beispiel, das auf dem Code basiert, den Dj Padzensky Ende der neunziger Jahre geschrieben hat und den ich im Perl- Modul Yahoo-FinanceQuote gepflegt habe fast genauso lange (das hier natürlich auch auf CPAN ist ) .
Wenn Sie ein kleines R kennen, sollte der Code selbsterklärend sein. Die Dokumentation für den Formatstring zu bekommen ist etwas kniffliger, aber zB das Perl-Modul hat einige.
Spalte drei ist Ihr letzter Handel. Während der Open Market-Zeiten erhalten Sie weniger NAs und mehr Datenvariabilität. Beachten Sie jedoch, dass die meisten Preise um 15 oder 20 Minuten verzögert sind - aber einige Indizes sind in Echtzeit. Echtzeitdaten sind ein großes Geschäft und ein großer Erlös für den Austausch. Sie werden daher in der Regel nicht weitergegeben. Und wenn ich mich recht erinnere, verwenden die neueren und aktuelleren Anzeigen auf den Finanzseiten von Google und Yahoo etwas AJAXy, das von außen schwerer zu melken ist.
Das hat heute bei mir nicht geklappt. Ich konnte den zusammengesetzten Nasdaq-Index, der vor 2001 erstellt wurde, aus meinen üblichen Datenquellen (Quandl und quantmod) nicht herunterladen und suchte nach Alternativen.
PatrickT
4
Hier ist eine kleine Funktion, die ich geschrieben habe, um "Pseudo-Echtzeit" -Daten von Yahoo zu sammeln und grafisch darzustellen:
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)})}
Es erzeugt Diagramme wie folgt:
Sie können die Daten auch für andere Zwecke verwenden.
Vielen Dank für dieses Skript. Ich bekomme jedoch ein dummes Problem mit einem "}". Ich kann es nicht ausführen :(
@acabahe Es läuft immer noch gut für mich. Stellen Sie sicher, dass Sie in der letzten Zeile alles von require(quantmod)bis zum Ende }selbst erfassen. Sie müssen mindestens 5 Minuten warten, bis ein Diagramm angezeigt wird.
Antworten:
Das ist wirklich keine Statistik-Frage (vielleicht könnte dies nach SO verschoben werden?), Aber es gibt eine nette Funktion in quantmod , die das tut, was Dirk von Hand gemacht hat. Siehe
getQuote()
undyahooQF()
. Wenn Sie tippen,yahooQF()
wird ein Menü mit allen möglichen Anführungszeichenformaten angezeigt, die Sie verwenden können.quelle
Das ist ziemlich einfach, da R direkt von einer bestimmten URL lesen kann. Der Schlüssel ist einfach zu wissen, wie man die URL bildet. Hier ist ein schnelles und schmutziges Beispiel, das auf dem Code basiert, den Dj Padzensky Ende der neunziger Jahre geschrieben hat und den ich im Perl- Modul Yahoo-FinanceQuote gepflegt habe fast genauso lange (das hier natürlich auch auf CPAN ist ) .
Wenn Sie ein kleines R kennen, sollte der Code selbsterklärend sein. Die Dokumentation für den Formatstring zu bekommen ist etwas kniffliger, aber zB das Perl-Modul hat einige.
Spalte drei ist Ihr letzter Handel. Während der Open Market-Zeiten erhalten Sie weniger NAs und mehr Datenvariabilität. Beachten Sie jedoch, dass die meisten Preise um 15 oder 20 Minuten verzögert sind - aber einige Indizes sind in Echtzeit. Echtzeitdaten sind ein großes Geschäft und ein großer Erlös für den Austausch. Sie werden daher in der Regel nicht weitergegeben. Und wenn ich mich recht erinnere, verwenden die neueren und aktuelleren Anzeigen auf den Finanzseiten von Google und Yahoo etwas AJAXy, das von außen schwerer zu melken ist.
quelle
Hier ist eine kleine Funktion, die ich geschrieben habe, um "Pseudo-Echtzeit" -Daten von Yahoo zu sammeln und grafisch darzustellen:
Es erzeugt Diagramme wie folgt:
Sie können die Daten auch für andere Zwecke verwenden.
quelle
require(quantmod)
bis zum Ende}
selbst erfassen. Sie müssen mindestens 5 Minuten warten, bis ein Diagramm angezeigt wird.quelle