Saya ingin mengimpor harga saham "Perdagangan Terakhir" dari Yahoo finance ke R. Tujuannya adalah untuk bekerja dengan (hampir) data waktu nyata. Apakah ada solusi?
Terima kasih sebelumnya atas komentar yang bermanfaat.
Ini benar-benar bukan pertanyaan statistik (mungkin ini bisa dipindahkan ke SO?), Tetapi ada fungsi yang bagus dalam kuantmod yang melakukan apa yang telah dilakukan Dirk dengan tangan. Lihat getQuote()dan yahooQF(). Mengetik yahooQF()akan memunculkan menu dari semua format kutipan yang dapat Anda gunakan.
Terima kasih atas jawaban Anda. Saya cukup baru di sini di stackexchange. Bagaimana saya bisa memindahkan pertanyaan saya ke SO?
Steven
@ Seven: Sama-sama. Saya tidak yakin bagaimana cara memindahkan pertanyaan; Saya pikir moderator dapat melakukannya.
Joshua Ulrich
15
Itu cukup mudah mengingat R dapat membaca langsung dari URL yang diberikan. Kuncinya adalah mengetahui cara membentuk URL. Berikut ini adalah contoh cepat dan kotor berdasarkan kode yang ditulis Dj Padzensky pada akhir 1990-an dan yang telah saya pertahankan dalam modul Perl Yahoo-FinanceQuote (yang tentu saja juga di CPAN di sini ) selama hampir sepanjang.
Jika Anda tahu sedikit R, kode harus jelas. Memperoleh dokumentasi untuk format string agak sulit tetapi misalnya modul Perl memiliki beberapa.
Kolom tiga adalah perdagangan terakhir Anda. Selama jam pasar terbuka Anda akan mendapatkan NAs lebih sedikit dan lebih banyak variabilitas data. Namun perlu dicatat bahwa sebagian besar harga tertunda 15 atau 20 menit --- tetapi beberapa indeks adalah waktu-nyata. Data waktu nyata adalah bisnis besar dan pendapatan besar untuk pertukaran sehingga mereka cenderung tidak memberikannya. Juga, dan jika saya ingat dengan benar, tampilan yang lebih baru dan lebih real-time pada halaman Keuangan di Google dan Yahoo menggunakan sesuatu yang lebih AJAXy yang lebih sulit untuk diperah dari luar.
ini tidak bekerja untuk saya hari ini, saya belum dapat mengunduh indeks Nasdaq komposit kembali ke sebelum tahun 2001, dari sumber data saya yang biasa (Quandl dan quantmod) untuk beberapa alasan, dan sedang mencari alternatif.
PatrickT
4
Inilah sedikit fungsi yang saya tulis untuk mengumpulkan dan memetakan data "pseudo-real time" dari 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)})}
Ini menghasilkan grafik seperti ini:
Anda juga dapat menggunakan data untuk tujuan lain.
Terima kasih untuk skrip ini, Namun saya mendapatkan masalah konyol dengan "}" Saya tidak bisa menjalankannya :(
@acabahe Masih berjalan baik untuk saya. Pastikan Anda mengambil semuanya, mulai require(quantmod)dari mengekor }dengan sendirinya di baris terakhir. Anda harus menunggu setidaknya 5 menit sebelum grafik akan muncul.
Jawaban:
Ini benar-benar bukan pertanyaan statistik (mungkin ini bisa dipindahkan ke SO?), Tetapi ada fungsi yang bagus dalam kuantmod yang melakukan apa yang telah dilakukan Dirk dengan tangan. Lihat
getQuote()
danyahooQF()
. MengetikyahooQF()
akan memunculkan menu dari semua format kutipan yang dapat Anda gunakan.sumber
Itu cukup mudah mengingat R dapat membaca langsung dari URL yang diberikan. Kuncinya adalah mengetahui cara membentuk URL. Berikut ini adalah contoh cepat dan kotor berdasarkan kode yang ditulis Dj Padzensky pada akhir 1990-an dan yang telah saya pertahankan dalam modul Perl Yahoo-FinanceQuote (yang tentu saja juga di CPAN di sini ) selama hampir sepanjang.
Jika Anda tahu sedikit R, kode harus jelas. Memperoleh dokumentasi untuk format string agak sulit tetapi misalnya modul Perl memiliki beberapa.
Kolom tiga adalah perdagangan terakhir Anda. Selama jam pasar terbuka Anda akan mendapatkan NAs lebih sedikit dan lebih banyak variabilitas data. Namun perlu dicatat bahwa sebagian besar harga tertunda 15 atau 20 menit --- tetapi beberapa indeks adalah waktu-nyata. Data waktu nyata adalah bisnis besar dan pendapatan besar untuk pertukaran sehingga mereka cenderung tidak memberikannya. Juga, dan jika saya ingat dengan benar, tampilan yang lebih baru dan lebih real-time pada halaman Keuangan di Google dan Yahoo menggunakan sesuatu yang lebih AJAXy yang lebih sulit untuk diperah dari luar.
sumber
Inilah sedikit fungsi yang saya tulis untuk mengumpulkan dan memetakan data "pseudo-real time" dari yahoo:
Ini menghasilkan grafik seperti ini:
Anda juga dapat menggunakan data untuk tujuan lain.
sumber
require(quantmod)
dari mengekor}
dengan sendirinya di baris terakhir. Anda harus menunggu setidaknya 5 menit sebelum grafik akan muncul.sumber