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:

Yohan Naftali

5 Comments

cici

Permisi pak, saya mau tanya.
kebetulan saya tadi membaca artikel bapak mengenai “Hati-Hati Berinvestasi pada Futures” https://yohanli.wordpress.com/2009/02/26/hati-hati-berinvestasi-pada-futures/
disana terdapat perusahaan yang kemarin menawarkan saya lowongan pekerjaan melalui website loker.id , saya sempat heran sih kenapa tiba2 ada tawaran kerja untuk saya (fresh graduate). apalagi setelah saya cek web. perusahaannya sepertinya termasuk perusahaan besar. disana ada 4 tahap tes, dan setelah itu jika lolos akan melaksanakan MT selama 1 tahun yg nantinya akan ditempatkan di posisi business manager. saya baru melaksanakan tahap pertama yaitu interview. setelah saya lihat postingan bapak saya menjadi ragu untuk melanjutkan. saya minta pendapat/saran dari bapak apakah sebaiknya saya lanjutkan untuk mencari pengalaman atau tidak dilanjutkan?
Terima kasih pak

Yohan Naftali

Postingan saya ditujukan kepada calon investor yang tidak memahami risiko saham futures / margin trading. Sebenarnya kalau calon investor dari awal diberikan penjelasan yang baik dan terbuka bahwa dalam investasi ini mengandung risiko dan bagaimana mekanisme-nya tidak akan menjadi masalah. Bagi anda yang ingin bekerja di dalam perusahaan saya pikir tidak ada salahnya, asalkan jangan sampai kita setelah diterima bekerja diberikan target mencari calon investor atau calon trader/spekulator yang akhirnya menyeret keluarga, teman untuk berinvestasi di bidang yang mereka tidak ketahui.

okta

Pagi pak….sy termasuk yang menurut sy kena tipu pak…sy mw nuntut wakil pialang tsb atau perusahaan pialang tersebut tp bingung mw mulai darimana…sedangkan saya rugi ratusan juta…klo sy mw konsul atw nanya2….sy bisa hub bapak kemana ya pak?ada nomor hp atw email yg online pak?yg oertama sy mw ngubungi bbj atau bappebti itu mw nanya akun sy memang terdaftar itu nanya kebagian apa?no telp nya brp?ada 4 akun sy…tp yg 3 sdh tdk bs sy buka lagi katanya karena dana sy sdh tidak ada…sedangkan di artikel bapak harusnya akun sy masih tetap ada…mohon sekali bantuannya pak

wenny

Halo,
Perkenalkan, Nama saya Wenny
Saya adalah development dari ForexMart, Kami melihat website anda dan kami ingin mendiskusikan kerjasama kemitraan dengan Anda. 
Boleh saya minta kontaknya untuk menjelaskan lebih lanjut atau anda bisa langsung menghubungi saya ke wenny@forexmart.com, terimakasih

Yohan Naftali

Mohon maaf Ibu/Bapak Okta, saya bukan ahli hukum, saya sarankan ibu/bapak menghubungi ahli hukum kalau memang merasa ditipu. Oleh karena itu pada artikel yang pernah saya tulis mengenai hati-hati berinvestasi pada futures (baik di http://www.yohanli.com maupun yohanli.wordpress.com), saya memperingatkan calon investor yang akan mananamkan uangnya di futures / index untuk berhati-hati dan benar benar memahami segala risiko investasinya. Segala macam investasi ada risikonya, seharusnya saat bapak/ibu menanamkan modal sudah mengecek dahulu mekanisme dan risiko-nya. Mengenai lampiran yang bapak/ibu baca, saya sudah informasikan bahwa itu adalah salinan dari sejumlah sumber.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.