बिटकॉइन ऐतिहासिक डेटा प्राप्त करें [बंद]


122

मैं अपना खुद का बिटकॉइन चार्ट बनाना चाहता हूं।

क्या आप बिटकॉइन की ऐतिहासिक कीमत डेटा प्राप्त करने का कोई विश्वसनीय तरीका जानते हैं? क्या REST का उपयोग करके इसे पुनः प्राप्त करने का कोई तरीका है? मैंने बिटफ़्लोर को देखा, जो आरईएसटी का समर्थन करता है, लेकिन यह कोई उपयोगी मूल्य नहीं लौटा रहा है, इसमें "आंतरिक सर्वर त्रुटि" है।

मैंने बिटकॉइन को भी देखा, लेकिन मुझे लगता है कि यह 2000 डेटा मूल्यों तक सीमित है।

क्या आप मुझे इसके बारे में काम करने के लिए कोई रूपरेखा या प्रणाली सुझाएंगे?



आप ऐतिहासिक बिटकॉइन डेटा के लिए भुगतान कर सकते हैं, जैसे कि कोचिग से कई एक्सचेंजों / बाजारों को कवर करना: coinigy.com/bitcoin-data
जो फिलिप्स

जवाबों:


150

वास्तव में, आप पूरे Bitcoin के इतिहास को CSV प्रारूप में Bitcoincharts से प्राप्त कर सकते हैं: http://api.bitcoincharts.com/v1/csv/

यह सक्रिय एक्सचेंजों के लिए दिन में दो बार अपडेट किया जाता है, और कुछ मृत एक्सचेंज भी है।

संपादित करें: चूंकि CSV में कोई कॉलम हेडर नहीं है, यहाँ वे क्या हैं: कॉलम 1) व्यापार का टाइमस्टैम्प, कॉलम 2) मूल्य, कॉलम 3) व्यापार का आयतन


2
+1 हां, यह वास्तव में स्थापित ट्रेडों के चार्टिंग के लिए बहुत उपयोगी है। डेटा को बिटस्टैम्प के पुशर एपीआई के माध्यम से लाइव प्राप्त किया जा सकता है जो कि मैं अभी कर रहा हूं। एक दिन के लिए बिटस्टैम्प को अनुक्रमित करने के बाद, मैंने बिटस्टैम्पयूएसडी.एसवीवी डाउनलोड किया और डेटा को एक पूर्ण चित्र बनाने के लिए तैयार किया
nurettin

2
@ लाइकनेस दूसरा कॉलम क्या है? मान 0.5-33 की सीमा में हैं, जो विनिमय दर USD / BTC नहीं हो सकता है।
होल्डनली

4
bitcoincharts.comडेटा में बड़े अंतराल से सावधान रहें । यह भी ध्यान दें कि कोई टिक "खरीद / बिक्री" जानकारी नहीं है।
पेट्र जवोरिक

2
@ यह यूआईएमएक्स टाइमस्टैम्प प्रारूप में है, इसलिए यूटीसी
टाइमज़ोन

2
मुझे Litecoin, Ethereum या अन्य महत्वपूर्ण सिक्कों के लिए डेटा कहाँ मिल सकता है?
स्कैन

31

आप यहां कई ऐतिहासिक डेटा पा सकते हैं: https://www.quandl.com/data/BCHARTS-Bitcoin-Charts-Exchange-Rate-Data


1
केवल एसओ पर लिंक को प्रोत्साहित नहीं किया जाता है। इसके अलावा, वह केवल डेटा ही नहीं, डेटा को पुनः प्राप्त करने का एक तरीका भी तलाश रहा है।
फैंसीपैंट्स

1
आप सही हैं, मुझे अपने उत्तर में अधिक व्यापक होना चाहिए था। हालाँकि, यह उनके अनुरोध का उत्तर देता है, क्योंकि एपीआई डेटा को पेज के दाईं ओर सूचीबद्ध करने के लिए कहता है।
सीन

लिंक टूट गया है
गुइल्यूम शेवेलियर

2
@GuillaumeChevalier मैंने quandl.com/data/BCHARTS-Bitcoin-Charts-Exchange-Rate-Data
Jörn

1
अच्छा लगा, रोचक साइट। एक और सेवा जो मुझे पसंद है, वह है अल्पकालिक और दीर्घकालिक निवेशों के लिए दैनिक क्रिप्टोक्यूरेंसी मूल्य पूर्वानुमान बनाने के लिए एआई और मशीन लर्निंग का उपयोग करने वाले वॉलेटिन्वेस्टॉर.com/forecast/bitcoin- prediction।
जॉनी

15

मामले में, आप बिटस्टैम्प व्यापार डेटा को अपने वेबस्कैट को उच्च संकल्प में एकत्रित करना चाहते हैं , इससे अधिक लंबी अवधि के लिए आप नीचे स्क्रिप्ट log_bitstamp_trades.py का उपयोग कर सकते हैं।

लिपि पायथन वेबसोकेट-क्लाइंट और पुशर_क्लिएंट_पीथॉन पुस्तकालयों का उपयोग करती है, इसलिए उन्हें स्थापित करें।

#!/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

और फ़ाइल कॉन्फ़िगरेशन लॉगऑन करें

/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
}

तो आप इसे पृष्ठभूमि पर चला सकते हैं

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

इन्फ्लेक्सडीबी जैसे टाइम-सीरीज़ स्टोर का उपयोग करना एक अच्छा सुधार होगा।
MrYellow

7

बिटस्टैंप में लाइव बिटकॉइन डेटा है जो इस लिंकJSON पर सार्वजनिक रूप से उपलब्ध हैं । इसे दस मिनट में 600 से अधिक बार एक्सेस करने का प्रयास करें अन्यथा वे आपके आईपी को अवरुद्ध कर देंगे (इसके अलावा, यह अनावश्यक है, वैसे भी यहां पढ़ें )। नीचे लाइव डेटा प्राप्त करने के लिए एक दृष्टिकोण है:C#

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
}

यहां से, आप इसे पार्स कर सकते हैं JSONऔर इसे डेटाबेस में स्टोर कर सकते हैं (या MongoDBसीधे इसे सम्मिलित कर सकते हैं) और फिर इसे एक्सेस कर सकते हैं।

ऐतिहासिक डेटा के लिए (डेटाबेस पर निर्भर करता है - यदि आप इसे कैसे देखते हैं), एक फ्लैट फ़ाइल से एक प्रविष्टि करें, जो कि अधिकांश डेटाबेस आपको उपयोग करने की अनुमति देते हैं (उदाहरण के लिए, SQL Serverआप BULK INSERTएक CSVफ़ाइल से कर सकते हैं )।


4

मैंने इस मामले के लिए एक जावा उदाहरण लिखा है:

JSONObjects और JSONArrays को पुनः प्राप्त करने के लिए json.org लाइब्रेरी का उपयोग करें। नीचे दिया गया उदाहरण ब्लॉकचैन.इनफो के डेटा का उपयोग करता है जिसे JSONObject के रूप में प्राप्त किया जा सकता है।

    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;
            }
        }
    }

यह किस पुस्तकालय का उपयोग कर रहा है?
माइकल ए

स्टैंडर्ड JSON: json.org
domi

4

कॉइनबेस में एक REST API है जो आपको उनकी वेबसाइट से ऐतिहासिक कीमतों तक पहुँच प्रदान करता है। डेटा हर दस मिनट में कॉइनबेस स्पॉट प्राइस (यूएसडी में) दिखाता है।

परिणाम CSV प्रारूप में दिए गए हैं। आपको एपीआई के माध्यम से इच्छित पृष्ठ संख्या को क्वेरी करना होगा। प्रति पृष्ठ 1000 परिणाम (या मूल्य अंक) हैं। यह प्रति पृष्ठ लगभग 7 दिनों का डेटा है।


4

नोड्स के साथ JSON में इसे स्क्रैप करना मजेदार होगा :)

https://github.com/f1lt3r/bitcoin-scraper

यहाँ छवि विवरण दर्ज करें

[
  [
    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)
  ]
]

स्क्रिप्ट के लिए धन्यवाद! ऐसा लगता है कि अब डाउनलोड की गई फ़ाइलों में "अपरिभाषित" है।
चाड जॉनसन

मैंने सिर्फ रेपो की जाँच की, भाग गया npm install, और फिर cat bitstampUSD-2014-9-9.jsonमुझे ठीक लग रहा है। यदि आप इसे काम करने में लगा रहे हैं, तो इसे Stackoverflow टिप्पणियों के बजाय Github में ले जा सकते हैं? मुझे एक बग रिपोर्ट छोड़ दो?
f1lt3r

अगर मैं समझता हूं कि आपका कोड मुझे 1 मिनट के पैमाने पर बिटकॉइन की कीमत का पूरा इतिहास प्राप्त करने की अनुमति देता है?
मय्युल ने

हाँ यह सही है
f1lt3r
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.