Tuesday, December 30, 2014

Tutorial Singkat Menggunakan Yahoo Finance API (Versi Indonesia)

<No English Version Available>

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 :
  1. 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
  2. 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 :

  3. Masuk ke Code View, dan tambahkan Imports di paling atas untuk 3 namespace

     Imports System.Net  
     Imports System.IO  
     Imports System.Text  
    

  4. 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.

  5. 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  
    
  6. 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 :

  1. Daftar kode saham yang ingin diquery disave dan dibaca dari file konfigurasi.
  2. Hasil query saham ditampilkan dalam bentuk grid.
  3. Ada Timer untuk query otomatis setiap selang waktu tertentu.
  4. Data yang ingin ditampilkan dapat dipilih (harga penutupan, nilai kapitalisasi dst)
Sekian dan terima kasih.




No comments:

Post a Comment