Chciałbym zaimportować cenę akcji „Last Trade” z finansów Yahoo do R. Intencją jest praca z (prawie) danymi w czasie rzeczywistym. Czy są jakieś rozwiązania?
To naprawdę nie jest pytanie statystyczne (być może można to przenieść do SO?), Ale jest ładna funkcja w quantmod, która robi to, co Dirk zrobił ręcznie. Zobacz getQuote()i yahooQF(). Wpisanie yahooQF()spowoduje wyświetlenie menu wszystkich możliwych formatów cytatów, których możesz użyć.
Dziękuję za Twoją odpowiedź. Jestem tutaj całkiem nowy w Stackexchange. Jak mogę przenieść moje pytanie do SO?
Steven
@Steven: Nie ma za co. Nie jestem pewien, jak poruszać pytania; Myślę, że moderatorzy mogą to zrobić.
Joshua Ulrich
15
Jest to dość łatwe, biorąc pod uwagę, że R może odczytać bezpośrednio z danego adresu URL. Kluczem jest po prostu wiedzieć, jak utworzyć adres URL. Oto szybki i nieprzyzwoity przykład oparty na kodzie napisanym przez Dj Padzieńskiego pod koniec lat 90. i który utrzymuję w module Perla Yahoo-FinanceQuote (który oczywiście dotyczy również CPAN ) prawie tak długo.
Jeśli znasz trochę R, kod powinien być zrozumiały. Pobieranie dokumentacji dla ciągu formatu jest nieco trudniejsze, ale np. Moduł Perla ma trochę.
Kolumna trzecia to Twoja ostatnia transakcja. W godzinach otwartego rynku otrzymasz mniej NA i większą zmienność danych. Należy jednak pamiętać, że większość cen jest opóźniona o 15 lub 20 minut --- ale niektóre wskaźniki są podawane w czasie rzeczywistym. Dane w czasie rzeczywistym to duży biznes i duży przychód na giełdach, więc zwykle nie oddają go. Ponadto, i jeśli dobrze pamiętam, nowsze i bardziej wyświetlane w czasie rzeczywistym strony Finansów w Google i Yahoo używają czegoś więcej AJAXy, które trudniej jest wydoić z zewnątrz.
to nie zadziałało dzisiaj dla mnie, z jakiegoś powodu nie byłem w stanie pobrać złożonego indeksu Nasdaq sprzed 2001 roku, z moich zwykłych źródeł danych (Quandl i quantmod) i szukałem alternatyw.
PatrickT
4
Oto mała funkcja, którą napisałem w celu gromadzenia i tworzenia wykresów danych „pseudo-czasu rzeczywistego” z yahoo:
require(quantmod)Times<- NULLPrices<- NULLwhile(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)})}
Dziękuję za ten skrypt, jednak dostaję głupi problem z „}” Nie mogę go uruchomić :(
@acabahe Nadal działa dobrze dla mnie. Upewnij się chwycić wszystko od require(quantmod)do spływu }wszystko przez siebie w ostatnim wierszu. Musisz poczekać co najmniej 5 minut, zanim pojawi się wykres.
Odpowiedzi:
To naprawdę nie jest pytanie statystyczne (być może można to przenieść do SO?), Ale jest ładna funkcja w quantmod, która robi to, co Dirk zrobił ręcznie. Zobacz
getQuote()
iyahooQF()
. WpisanieyahooQF()
spowoduje wyświetlenie menu wszystkich możliwych formatów cytatów, których możesz użyć.źródło
Jest to dość łatwe, biorąc pod uwagę, że R może odczytać bezpośrednio z danego adresu URL. Kluczem jest po prostu wiedzieć, jak utworzyć adres URL. Oto szybki i nieprzyzwoity przykład oparty na kodzie napisanym przez Dj Padzieńskiego pod koniec lat 90. i który utrzymuję w module Perla Yahoo-FinanceQuote (który oczywiście dotyczy również CPAN ) prawie tak długo.
Jeśli znasz trochę R, kod powinien być zrozumiały. Pobieranie dokumentacji dla ciągu formatu jest nieco trudniejsze, ale np. Moduł Perla ma trochę.
Kolumna trzecia to Twoja ostatnia transakcja. W godzinach otwartego rynku otrzymasz mniej NA i większą zmienność danych. Należy jednak pamiętać, że większość cen jest opóźniona o 15 lub 20 minut --- ale niektóre wskaźniki są podawane w czasie rzeczywistym. Dane w czasie rzeczywistym to duży biznes i duży przychód na giełdach, więc zwykle nie oddają go. Ponadto, i jeśli dobrze pamiętam, nowsze i bardziej wyświetlane w czasie rzeczywistym strony Finansów w Google i Yahoo używają czegoś więcej AJAXy, które trudniej jest wydoić z zewnątrz.
źródło
Oto mała funkcja, którą napisałem w celu gromadzenia i tworzenia wykresów danych „pseudo-czasu rzeczywistego” z yahoo:
Tworzy takie wykresy:
Możesz również użyć danych do innych celów.
źródło
require(quantmod)
do spływu}
wszystko przez siebie w ostatnim wierszu. Musisz poczekać co najmniej 5 minut, zanim pojawi się wykres.źródło