Mendapatkan Data Saham Online Menggunakan R
Pengambilan keputusan pada bidang keuangan dibutuhkan data yang lengkap dan cepat. Internet telah memudahkan pengambil keputusan untuk mendapatkan data secara online. Salah satu data yang dibutuhkan adalah data saham untuk para investor saham yang akan melakukan keputusan jual atau beli saham.
Software statistik R memudahkan para pengambil keputusan untuk segera melakukan analisis data, dalam hal ini data saham. Yahoo Finance sebagai salah satu penyedia data online menyediakan data saham EOD (end of day).
Berikut adalah contoh command untuk mengambil data saham ASII.JK ke dalam dataset R. Saya menggunakan R Studio untuk memudahkan penggunaan R.
URL <- "http://ichart.finance.yahoo.com/table.csv?s=ASII.JK" data <- read.csv(URL) data$Date <- as.Date(data$Date, "%Y-%m-%d")
Command pada baris pertama mengarahkan URL API yahoo finance untuk mengambil data saham ASII. Command pada baris kedua menyimpan data ASII pada yahoo finance pada object bernama data. Pada baris ketiga melakukan konversi string pada kolom Date menjadi format Date.
Alternatif lainnya menggunakan package {tseries}. Package {tseries} adalah paket untuk analisis time series dan keuangan komputasi (computational finance).
library(tseries) data <- get.hist.quote("ASII.JK")
data yang diperoleh dari package {tseries} berupa object zoo.
Package {quantmod} juga menyediakan cara yang mudah untuk mendapatkan data saham, berikut adalah contoh mendapatkan harga saham ASII Adjusted dari 1 Januari 2000 sampai dengan 31 Desember 2016
library(quantmod) getSymbols("ASII.JK", from = "2000-01-01", to = "2016-12-30", src = "yahoo", adjust = TRUE)
Selanjutnya data yang didapat dari {quantmod} dapat diakses pada object ASII.JK, berupa class xts dan zoo.
Object xts merupakan singkatan dari eXtensible Time Series. Object xts didesain untuk data time series. Object xts merupakan ekstensi dari object zoo.
Saat penulisan ini, src bisa memilih dari: yahoo, google, MySQL, FRED, csv, RData, and oanda
Selanjutnya untuk melihat data dapat digunakan command:
View(data)
Sedangkan untuk mengakses vector (vector adalah sebutan array pada R) salah satu kolom, misalnya kolom harga penutupan (Close) dapat dilakukan dengan cara:
View(data$Close)
Untuk menampilkan plot antara tanggal dan harga penutupan dapat dilakukan dengan mengeksekusi command:
plot(data$Date, data$Close)
apabila menggunakan library tseries, maka data yang didapat berupa zoo object, sehingga commandnya cukup:
plot(data$Close)
Untuk melakukan plot candlestick dapat menggunakan library plotly.
Berikut adalah script untuk melakukan plot data ke candlestick
Pertama, copykan dulu object data ke object df
df <- data
Buat object hovertxt
hovertxt <- Map(function(x,y)paste0(x, ":", y), names(df), df) hovertxt <- Reduce(function(x, y)paste0(x, "<br&;gt;", y), hovertxt)
panggil fungsi plot_ly()
plot_ly(df, x = ~Date, xend = ~Date, hoverinfo = "none", color = ~Close > Open, colors = c("#00b386","#ff6666")) %>% add_segments(y = ~Low, yend = ~High, line = list(width = 1, color = "black")) %>% add_segments(y = ~Open, yend = ~Close, line = list(width = 3)) %>% add_markers(y = ~(Low + High)/2, hoverinfo = "text", text = hovertxt, marker = list(color = "transparent")) %>% layout(showlegend = FALSE, yaxis = list(title = "Price", domain = c(0, 0.9)), annotations = list( list(xref = "paper", yref = "paper", x = 0, y = 1, showarrow = F, xanchor = "left", yanchor = "top", align = "left", text = paste0("<b>ASII</b>")), list(xref = "paper", yref = "paper", x = 0.75, y = 1, showarrow = F, xanchor = "left", yanchor = "top", align = "left", text = paste(range(df$Date), collapse = " : "), font = list(size = 8))), plot_bgcolor = "#f2f2f2")
Tampilan grafik seperti berikut ini:
5 Comments