2013-04-22 24 views
96

Kendi bitcoin grafiğimi yapmak istiyorum.Bitcoin tarihsel verilerini edinin

Bitcoins tarihsel fiyat verilerini almak için güvenilir bir yol biliyor musunuz? REST kullanarak onu almanın bir yolu var mı? REST'i destekleyen Bitfloor'u gördüm, ancak herhangi bir kullanışlı değer döndürmüyor, bir "dahili sunucu hatası" var.

Ayrıca Bitcoincharts gördüm, ama 2000 veri değerleri ile sınırlı olduğunu düşünüyorum.

Bu konuda çalışmak için herhangi bir çerçeve veya sistem önerir misiniz?

+3

: http://bitcoin.stackexchange.com/a/4808/5 – nmat

cevap

118

Aslında, bütün Bitcoin burada CSV formatında Bitcoincharts geçmişi esnaf olsun CAN: aktif alışverişi için günde iki kez güncellenen ve birkaç ölü borsaları da orada http://api.bitcoincharts.com/v1/csv/

.

DÜZENLEME: hayır sütun başlıkları CSV'lerden içinde olmadığı için, burada onlar ne: sütun 1) trade'in zaman damgası, sütun 2) fiyat, kolon 3) ticaret hacmi

+2

+1 evet, aslında kurulmuş esnafı görüntülemek için çok yararlıdır. Veriler, şu anda yaptığım şey olan bitstamp'ın itici API'si aracılığıyla da canlı olarak edinilebilir. Bir günlüğüne bitstamp indeksledikten sonra, bitstampUSD.csv dosyasını indirdim ve verileri tam bir resme sahip olacak şekilde hazırladım – nurettin

+0

@Lykegenes ayrıca esnaf listesi pazar derinliğinde bilgi göstermiyor, derinlik iki siparişin anlık bir resmidir Ticaret sıralaması sadece sipariş defterlerinin – anddam

+0

@anddam tarafından karşılandığı bir noktada iken, pazar derinliği verilerini arıyorsanız, bilmiyorum, ama bunu bulursanız, lütfen paylaşın! :) – Lykegenes

27

Burada geçmiş verileri bir sürü bulabilirsiniz: https://www.quandl.com/data/BCHARTS-Bitcoin-Charts-Exchange-Rate-Data

+1

Bağlantı yalnızca cevaplar SO üzerinde teşvik edilmemektedir. Ayrıca sadece veriyi değil, verileri almak için bir yol arıyor. – fancyPants

+1

Haklısın, cevabımda daha kapsamlı olmalıydım. Bununla birlikte, isteğin yanıtı, API'nin çağrısı almak için yaptığı çağrıların, sayfanın sağ tarafında listelenmesidir. – Sean

+0

Bağlantı bozuk –

7

Bitstamp this link de JSON yılında herkese açık olan canlı Bitcoin verilere sahip. on dakika içinde 600 kereden fazla erişmeyi deneyin veya IP'nizi engelleyecekler (artı, zaten gereksizdir; read more here).

using (var WebClient = new System.Net.WebClient()) 
{ 
    var json = WebClient.DownloadString("https://www.bitstamp.net/api/ticker/"); 
    string value = Convert.ToString(json); 
    // Parse/use from here 
} 

Buradan, JSON ayrıştırmak ve bir veritabanında depolamak (veya MongoDB doğrudan takın) ve daha sonra erişmek: Aşağıdaki canlı verileri almak için bir C# yaklaşımdır. , Bir CSV bir BULK INSERT yapabilirsiniz SQL Server ile çoğu veritabanları yapabilirsiniz (örneğin, kullanmasına izin düz bir dosya, bir ekleme yapmak - (buna öyle yaklaşım yöntemi buysa veritabanı bağlı) tarihi veriler için

dosya).

4

bu durum için bir java örnek yazdım:

Kullan json.org kütüphane JSONObjects ve JSONArrays almak için. Aşağıdaki örnek, JSONObject olarak elde edilebilen blockchain.info verilerini kullanır.

public class main 
    { 
     public static void main(String[] args) throws MalformedURLException, IOException 
     { 
      JSONObject data = getJSONfromURL("https://blockchain.info/charts/market-price?format=json"); 
      JSONArray data_array = data.getJSONArray("values"); 

      for (int i = 0; i < data_array.length(); i++) 
      { 
       JSONObject price_point = data_array.getJSONObject(i); 

       // Unix time 
       int x = price_point.getInt("x"); 

       // Bitcoin price at that time 
       double y = price_point.getDouble("y"); 

       // Do something with x and y. 
      } 

     } 

     public static JSONObject getJSONfromURL(String URL) 
     { 
      try 
      { 
       URLConnection uc; 
       URL url = new URL(URL); 
       uc = url.openConnection(); 
       uc.setConnectTimeout(10000); 
       uc.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); 
       uc.connect(); 

       BufferedReader rd = new BufferedReader(
         new InputStreamReader(uc.getInputStream(), 
         Charset.forName("UTF-8"))); 

       StringBuilder sb = new StringBuilder(); 
       int cp; 
       while ((cp = rd.read()) != -1) 
       { 
        sb.append((char)cp); 
       } 

       String jsonText = (sb.toString());    

       return new JSONObject(jsonText.toString()); 
      } catch (IOException ex) 
      { 
       return null; 
      } 
     } 
    } 
+0

Bu kitaplık nedir? – Codingo

+0

Standart JSON: http://www.json.org/ – domi

2

Coinbase kendi web sitelerinden tarihsel fiyatlara erişim sağlayan bir REST API vardır. Veriler, Coinbase spot fiyatını (USD cinsinden) her on dakikada bir gösteriyor.

Sonuçlar CSV biçiminde döndürülür. API aracılığıyla istediğiniz sayfa numarasını sorgulamanız gerekir. Sayfa başına 1000 sonuç (veya fiyat noktası) vardır. Bu, sayfa başına yaklaşık 7 günlük veri demektir.

15

Örnek olarak, bitstamp ticaret verilerini websocket formunu daha uzun bir süre boyunca daha yüksek çözünürlükte toplamak istiyorsanız, aşağıda log_bitstamp_trades.py betiğini kullanabilirsiniz.

Komut dosyası, python websocket-client ve pusher_client_python kitaplıklarını kullanır, bu nedenle bunları yükleyin.

#!/usr/bin/python 

import pusherclient 
import time 
import logging 
import sys 
import datetime 
import signal 
import os 

logging.basicConfig() 
log_file_fd = None 

def sigint_and_sigterm_handler(signal, frame): 
    global log_file_fd 
    log_file_fd.close() 
    sys.exit(0) 


class BitstampLogger: 

    def __init__(self, log_file_path, log_file_reload_path, pusher_key, channel, event): 
     self.channel = channel 
     self.event = event 
     self.log_file_fd = open(log_file_path, "a") 
     self.log_file_reload_path = log_file_reload_path 
     self.pusher = pusherclient.Pusher(pusher_key) 
     self.pusher.connection.logger.setLevel(logging.WARNING) 
     self.pusher.connection.bind('pusher:connection_established', self.connect_handler) 
     self.pusher.connect() 

    def callback(self, data): 
     utc_timestamp = time.mktime(datetime.datetime.utcnow().timetuple()) 
     line = str(utc_timestamp) + " " + data + "\n" 
     if os.path.exists(self.log_file_reload_path): 
      os.remove(self.log_file_reload_path) 
      self.log_file_fd.close() 
      self.log_file_fd = open(log_file_path, "a") 
     self.log_file_fd.write(line) 

    def connect_handler(self, data): 
     channel = self.pusher.subscribe(self.channel) 
     channel.bind(self.event, self.callback) 


def main(log_file_path, log_file_reload_path): 
    global log_file_fd 
    bitstamp_logger = BitstampLogger(
     log_file_path, 
     log_file_reload_path, 
     "de504dc5763aeef9ff52", 
     "live_trades", 
     "trade") 
    log_file_fd = bitstamp_logger.log_file_fd 
    signal.signal(signal.SIGINT, sigint_and_sigterm_handler) 
    signal.signal(signal.SIGTERM, sigint_and_sigterm_handler) 
    while True: 
     time.sleep(1) 


if __name__ == '__main__': 
    log_file_path = sys.argv[1] 
    log_file_reload_path = sys.argv[2] 
    main(log_file_path, log_file_reload_path 

ve logrotate dosya yapılandırma

/mnt/data/bitstamp_logs/bitstamp-trade.log 
{ 
    rotate 10000000000 
    minsize 10M 
    copytruncate 
    missingok 
    compress 
    postrotate 
     touch /mnt/data/bitstamp_logs/reload_log > /dev/null 
    endscript 
} 

sonra node.js ile JSON bunu Kazıma

nohup ./log_bitstamp_trades.py /mnt/data/bitstamp_logs/bitstamp-trade.log /mnt/data/bitstamp_logs/reload_log & 
+0

InfluxDB gibi bir zaman serisi mağazasının kullanılması güzel bir gelişme olacaktır. – MrYellow

3

eğlenceli olurdu :)

https://github.com/f1lt3r/bitcoin-scraper arka planda çalıştırabilirsiniz

İşte

enter image description here

[ 
    [ 
    1419033600, // Timestamp (1 for each minute of entire history) 
    318.58,  // Open 
    318.58,  // High 
    318.58,  // Low 
    318.58,  // Close 
    0.01719605, // Volume (BTC) 
    5.478317609, // Volume (Currency) 
    318.58  // Weighted Price (USD) 
    ] 
] 
+0

Komut dosyası için teşekkürler! Şimdi indirilen dosyaların "undefined" içerdiği anlaşılıyor. –

+0

Sadece repo'yu kontrol ettim, 'npm install' 'i çalıştırdım ve sonra kedi bitstampUSD-2014-9-9.json' bana iyi görünüyor. Çalışmaya yatırım yapıyorsanız, Stackoverflow yorumları yerine Github'a götürelim?Bana hata raporu ver – f1lt3r

+0

Eğer kodunuzu anlıyorsam, bitcoin fiyatının tamamını 1 dakikalık bir ölçekte elde etmemi sağlıyor? –