Hari ini kita akan belajar membuat aplikasi Stock Inquiry sederhana menggunakan API (Application Programming Interface) Yahoo Finance. Artikel yang serupa sudah banyak disediakan dalam bahasa inggris, jadi untuk kali ini saya tidak menyediakan versi Inggrisnya.
Berkenalan dengan Yahoo Finance API
Informasi lengkap mengenai API Yahoo Finance dapat dicari sendiri dengan menggunakan keyword "Yahoo Finance API", dan akan diredirect ke link berikut
https://code.google.com/p/yahoo-finance-managed/wiki/YahooFinanceAPIs
Dimana pada URL yang bersangkutan ada link lagi untuk jenis data yang kita mau, yaitu apakah dalam bentuk CSV (Comma Separated Values), YQL, Charts atau RSS. Untuk tutorial kali ini kita akan menggunakan versi CSV-nya.
Untuk meminta data dalam bentuk CSV ke Yahoo Finance, adalah dengan melakukan HTTP Request ke url download.yahoo.finance.com seperti demikian :
http://download.finance.yahoo.com/d/quotes.csv?s=
yang kemudian kita tambahkan ID dari kode saham yang kita mau, misalkan dalam hal ini kita ambil dua contoh yaitu Telkom Indonesia (TLKM.JK), dan Astra International (ASII.JK). Karena kita meminta lebih dari 1 kode saham, maka kita pisahkan dengan tanda koma (,)
http://download.finance.yahoo.com/d/quotes.csv?s=TLKM.JK,ASII.JK
yang kemudian kita tambahkan lagi dengan format data (properties) apa saja yang kita minta.
Daftar lengkapnya ada di sini :
https://code.google.com/p/yahoo-finance-managed/wiki/enumQuoteProperty
Untuk keperluan tutorial, berarti kita akan meminta Simbol (s), Bursa (x) , Nama/kode saham (n), nilai terakhir (l1) dan nilai penutupan terakhir (op). berarti kita tambahkan URL di atas dengan &f=sxnl1op
Dan karena kita minta dalam bentuk CSV, berarti kita tambahkan lagi dengan &e=.csv sehingga URL lengkapnya menjadi
http://download.finance.yahoo.com/d/quotes.csv?s=TLKM.JK,ASII.JK&f=sxnl1op&e=.csv
Silahkan coba copy paste URL di atas kita ke address bar pada browser, yang setelah kita proses, akan mendownload suatu file *.csv.
File ini dapat kita buka dengan menggunakan Ms Excel (di sini saya menggunakan WPS Spreadsheets), atau Notepad, dan kita akan mendapatkan isinya sedemikian.
Perhatikan bahwa ketika dibuka di notepad, bentuknya adalah nilai-nilai yang dipisahkan dengan koma (,) dan bahwa ada 2 baris, satu untuk TLKM.JK dan satu lagi untuk ASII.JK
Membuat Programnya
Dan sekarang untuk keperluan pada tutorial ini, kita akan mencoba mendapatkan file tersebut melalui program yang kita buat sendiri. Prinsipnya sama, yaitu program akan melakukan HTTP Request seperti pada browser, yang kemudian akan mendapatkan response berupa file csv yang dimaksud. Kita tidak akan mensave response tersebut ke dalam suatu file *.csv, tapi kita akan langsung menampilkannya di program.
Mari kita mulai :
- Buat Project baru (Windows Forms) menggunakan Visual Studio (di contoh digunakan Visual Studio 2008 Express, tapi versi lainnya juga memungkinkan).
Beri nama project tersebut YahooFinanceAPITutorial - Visual Studio akan membuatkan project dengan tipe windows form sederhana, untuk tahap awal dari tutorial kita, kita akan mencoba hanya 1 kode saham, diinput dengan menggunakan bantuan 1 textbox, dimana outputnya akan ditampilkan dalam textbox lainnya, setelah ditekan tombol "request"
Buat tampilannya sebagai berikut : - Masuk ke Code View, dan tambahkan Imports di paling atas untuk 3 namespace
Imports System.Net Imports System.IO Imports System.Text
- Kemudian tambahkan event handler untuk btnRequest_Click, isi sedemikian
Dim sUrl As String If txtKodeSaham.Text = "" Then MessageBox.Show("Masukkan Kode Saham!") Exit Sub End If sUrl = "http://download.finance.yahoo.com/d/quotes.csv?s=" & txtKodeSaham.Text & "&f=sxnl1op&e=.csv"
Maksud code di atas adalah membuat URL yang akan digunakan untuk meminta data (request) ke Yahoo Finance.
- Tahap selanjutnya adalah membuat HTTP Request menggunakan URL tersebut.
Pada nomor 3 sudah kita tambahkan namespace System.Net, karena kita akan menggunakan class HttpWebRequest untuk melakukan request, yang hasilnya akan kita baca menggunakan class StreamReader yang terdapat pada namespace System.IO.
Sedangkan namespace System.Text kita tambahkan karena kita ingin menggunakan class StringBuilder dan ada sedikit keperluan Encoding
Taruh code ini di bawah code di atas :
Dim sbHasil As New StringBuilder Dim Request As HttpWebRequest Dim ResponseStream As StreamReader Try Request = CType(WebRequest.Create(sUrl), HttpWebRequest) Request.MaximumAutomaticRedirections = 1 Request.AllowAutoRedirect = True ' get the response from the server. ResponseStream = New StreamReader(Request.GetResponse.GetResponseStream, Encoding.ASCII) 'read first line Dim sLine As String = ResponseStream.ReadLine() While Not String.IsNullOrEmpty(sLine) 'separate the result using comma as separator Dim sArrResult() As String = sLine.Split(",") sbHasil.AppendLine("Kode = " & sArrResult(0)) sbHasil.AppendLine("Bursa = " & sArrResult(1)) sbHasil.AppendLine("Nama = " & sArrResult(2)) sbHasil.AppendLine("Latest Price = " & sArrResult(3)) sbHasil.AppendLine("Latest Closing Price = " & sArrResult(4)) sbHasil.AppendLine() 'read next line sLine = ResponseStream.ReadLine() End While txtHasil.Text = sbHasil.ToString Catch ex As Exception MessageBox.Show(ex.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error) End Try
- Kalau sudah, mari kita jalankan programnya, dan kita tes dengan memasukkan TLKM.JK,ASII.JK dan menekan tombol Request
Maka hasilnya akan sedemikian :
Dan selesai sudah Tutorial singkat ini. Tentu saja ini adalah bentuk yang sangat sederhana sekali. Untuk pengembangan berikutnya anda dapat latihan sendiri, misalnya dengan :
- Daftar kode saham yang ingin diquery disave dan dibaca dari file konfigurasi.
- Hasil query saham ditampilkan dalam bentuk grid.
- Ada Timer untuk query otomatis setiap selang waktu tertentu.
- Data yang ingin ditampilkan dapat dipilih (harga penutupan, nilai kapitalisasi dst)
No comments:
Post a Comment