Berikut adalah tutorial python menarik lainnya untuk mengambil data intraday menggunakan API Keuangan Google , simpan data dalam format csv dan juga plot data intraday sebagai format candlestick. Kami menggunakan pustaka plotly untuk memplot grafik candlestick dan pandas untuk mengelola data deret waktu. Untungnya, saya menemukan kode python yang menarik yang mengambil data intraday Google dan menyimpannya dalam format csv. Saya telah melakukan sedikit modifikasi pada kode (exchange ditambahkan ke Google API) sehingga seseorang dapat mengambil data untuk exchange apa pun.
Dalam contoh kami, kami mencoba mengambil data (Tanggal, Waktu, Simbol, Buka, Tinggi, Rendah, Tutup, data Volume) untuk RCOM (Reliance Communication) dan plot sebagai candlestick menggunakan library plotly. Unduh contoh file CSV RCOM diambil dari Google Finance
Contoh IPython Notebook menggunakan Plotly dan pandas untuk memplot Grafik Candlestick Intraday Interaktif menggunakan Google Finance API:
mengimpor permintaan.paket.urllib3 permintaan.paket.urllib3.nonaktifkan_peringatan()
mengimpor secara plotly secara plotly.__Versi: kapan__
'1.9.0'
Kode untuk Mengambil Data Google Intrday dan Menyimpan dalam Format CSV
# Hak Cipta (c) 2011, Mark Chenoweth # Hak cipta dilindungi undang-undang. # # Distribusi ulang dan penggunaan dalam bentuk sumber dan biner, dengan atau tanpa modifikasi, diizinkan # asalkan kondisi berikut terpenuhi: # # - Distribusi ulang kode sumber harus mempertahankan pemberitahuan hak cipta di atas, daftar ketentuan ini, dan penyangkalan berikut. # # - Distribusi ulang dalam bentuk biner harus mereproduksi pemberitahuan hak cipta di atas, daftar ketentuan ini dan yang berikut ini # penyangkalan dalam dokumentasi dan/atau materi lain yang disertakan dengan distribusi. # # PERANGKAT LUNAK INI DISEDIAKAN OLEH PEMEGANG HAK CIPTA DAN KONTRIBUTOR "SEBAGAIMANA ADANYA" DAN SEGALA JAMINAN TERSURAT ATAU TERSIRAT, # TERMASUK, NAMUN TIDAK TERBATAS PADA, JAMINAN TERSIRAT ATAS KEMAMPUAN UNTUK DIPERDAGANGKAN DAN KESESUAIAN UNTUK TUJUAN TERTENTU # DISANGKAL. PEMEGANG HAK CIPTA ATAU KONTRIBUTOR DALAM KEADAAN APAPUN TIDAK BERTANGGUNG JAWAB ATAS SEGALA KERUSAKAN LANGSUNG, TIDAK LANGSUNG, INSIDENTAL, KHUSUS, # KERUSAKAN YANG BERSIFAT TELADAN ATAU YANG DISEBABKAN OLEH (TERMASUK NAMUN TIDAK TERBATAS PADA, PENGADAAN BARANG ATAU JASA PENGGANTI; KERUGIAN JUMLAH PENGGUNAAN, DATA, ATAU KEUNTUNGAN; ATAU GANGGUAN BISNIS) BAGAIMANA PUN PENYEBABNYA DAN PADA TEORI TANGGUNG JAWAB APAPUN, BAIK DALAM KONTRAK, # TANGGUNG JAWAB HUKUM, ATAU TINDAKAN MELAWAN HUKUM (TERMASUK KELALAIAN ATAU LAINNYA) YANG TIMBUL DALAM CARA APAPUN DARI PENGGUNAAN PERANGKAT LUNAK INI, BAHKAN JIKA # DIBERITAHUKAN TENTANG KEMUNGKINAN TERJADINYA KERUSAKAN TERSEBUT. mengimpor urllib,waktu,tanggal Waktu mengimpor panda as pd kelas kutipan(obyek): TANGGAL_FMT = '%Y-%m-%d' WAKTU_FMT = '%H:%M:%S' def __init__(diri): diri.simbol = '' diri.tanggal,diri.waktu,diri.membuka_,diri.tinggi,diri.rendah,diri.menutup penjualan,diri.volume = ([] untuk _ in jarak(7)) def menambahkan(diri,dt,membuka_,tinggi,rendah,menutup penjualan,volume): diri.tanggal.menambahkan(dt.tanggal()) diri.waktu.menambahkan(dt.waktu()) diri.membuka_.menambahkan(mengapung(membuka_)) diri.tinggi.menambahkan(mengapung(tinggi)) diri.rendah.menambahkan(mengapung(rendah)) diri.menutup penjualan.menambahkan(mengapung(menutup penjualan)) diri.volume.menambahkan(int(volume)) def ke_csv(diri): kembali ''.ikut(["{0},{1},{2},{3:.2f},{4:.2f},{5:.2f},{6:.2f},{7}n".format(diri.simbol, diri.tanggal[bar].waktu luang('%Y-%m-%d'),diri.waktu[bar].waktu luang('%H:%M:%S'), diri.membuka_[bar],diri.tinggi[bar],diri.rendah[bar],diri.menutup penjualan[bar],diri.volume[bar]) untuk bar in rentang x(len(diri.menutup penjualan))]) def tulis_csv(diri,nama file): dengan Buka(nama file,'w') as f: f.menulis(diri.ke_csv()) def baca_csv(diri,nama file): diri.simbol = '' diri.tanggal,diri.waktu,diri.membuka_,diri.tinggi,diri.rendah,diri.menutup penjualan,diri.volume = ([] untuk _ in jarak(7)) untuk line in Buka(nama file,'R'): simbol,ds,ts,membuka_,tinggi,rendah,menutup penjualan,volume = line.strip ulang().membagi(',') diri.simbol = simbol dt = tanggal Waktu.tanggal Waktu.waktu strp(ds+''+ts,diri.TANGGAL_FMT+''+diri.WAKTU_FMT) diri.menambahkan(dt,membuka_,tinggi,rendah,menutup penjualan,volume) kembali Benar def __repr__(diri): kembali diri.ke_csv() kelas Kutipan GoogleIntraday(kutipan): ''' Kutipan intraday dari Google. Tentukan interval detik dan jumlah hari ''' def __init__(diri,simbol,interval_detik=300,jumlah_hari=5): super(Kutipan GoogleIntraday,diri).__init__() diri.simbol = simbol.atas() rangkaian_url = "http://www.google.com/finance/getprices?q={0}".format(diri.simbol) rangkaian_url += "&x=NSE&i={0}&p={1}d&f=d,o,h,l,c,v".format(interval_detik,jumlah_hari) csv = urllib.buka url(rangkaian_url).garis baca() untuk bar in rentang x(7,len(csv)): if csv[bar].menghitung(',')!=5: terus mengimbangi,menutup penjualan,tinggi,rendah,membuka_,volume = csv[bar].membagi(',') if mengimbangi[0]=='A': hari = mengapung(mengimbangi[1:]) mengimbangi = 0 lain: mengimbangi = mengapung(mengimbangi) membuka_,tinggi,rendah,menutup penjualan = [mengapung(x) untuk x in [membuka_,tinggi,rendah,menutup penjualan]] dt = tanggal Waktu.tanggal Waktu.daristempelwaktu(hari+(interval_detik*mengimbangi)) diri.menambahkan(dt,membuka_,tinggi,rendah,menutup penjualan,volume) if __nama__ == '__utama__': q = Kutipan GoogleIntraday('RKOM',300,30) #print q # cetak itu q.tulis_csv('c://data//rcom.csv')
Membaca file CSV dan Mengubahnya menjadi Dataframe
penguraian tanggal = lambda x: pd.tanggal Waktu.waktu strp(x, '%Y-%m-%d %H:%M:%S') df = pd.baca_csv('c://data//rcom.csv',September=',',Header=None, tanggal_parse={'tanggal waktu': [1, 2Bahasa Indonesia: pengurai_tanggal=penguraian tanggal) df.kolom = ['Tanggal dan waktu', 'Simbol','Membuka','Tinggi','Rendah','Menutup','Volume'] #df.indeks = df['Tanggal waktu'] #df.index.name = Tidak Ada df.kepala(5)
Datetime | Символ | Open | High | Rendah | Penyelesaian | Volume | |
---|---|---|---|---|---|---|---|
0 | 2015-10-14 09:20:00 | RCOM | 77.80 | 78.50 | 77.60 | 78.40 | 552244 |
1 | 2015-10-14 09:25:00 | RCOM | 78.40 | 79.05 | 78.30 | 78.85 | 546950 |
2 | 2015-10-14 09:30:00 | RCOM | 78.75 | 78.85 | 78.25 | 78.25 | 223054 |
3 | 2015-10-14 09:35:00 | RCOM | 78.30 | 78.50 | 78.25 | 78.35 | 125523 |
4 | 2015-10-14 09:40:00 | RCOM | 78.40 | 78.65 | 78.35 | 78.55 | 105811 |
Plot data harian sebagai grafik menggunakan plotly
dari tanggal Waktu mengimpor tanggal mengimpor plotly.plotly as py dari plotly.alat mengimpor GambarPabrik as FF dari tanggal Waktu mengimpor tanggal Waktu
ara = FF.buat_lilin(df.Open, df.High, df.Rendah, df.Penyelesaian, tanggal=df.indeks) ara['tata letak'].memperbarui({ 'Judul': 'Grafik Intraday RCOM', 'yaksis': {'Judul': 'Saham RCOM'}}) py.iplot(ara, nama file='keuangan/intraday-candlestick', mengesahkan=Salah)
Waktu pengundian untuk plot ini akan lambat untuk semua klien.