ビットコインの履歴データを取得する[終了]


122

自分のビットコインチャートを作りたいです。

ビットコインの過去の価格データを取得する信頼できる方法を知っていますか?RESTを使用してそれを取得する方法はありますか?RESTをサポートするBitfloorを見ましたが、有用な値を返していません。「内部サーバーエラー」が発生しています。

ビットコインチャートも見ましたが、データ値は2000に制限されていると思います。

それについて作業するためのフレームワークやシステムを提案していただけますか?



Coinigyの多くの取引所/市場をカバーする過去のビットコインデータに支払うことができます:coinigy.com/bitcoin-data
Joe Phillips

回答:


150

実際には、ビットコインの取引履歴全体をビットコインチャートからCSV形式でここで取得できます:http ://api.bitcoincharts.com/v1/csv/

アクティブな交換のために1日に2回更新され、いくつかのデッド交換もあります。

編集:CSVには列ヘッダーがないため、次のようになります。列1)取引のタイムスタンプ、列2)価格、列3)取引量


2
+1はい、それは実際に確立された取引をチャート化するのに非常に役立ちます。データは、ビットスタンプのプッシャーAPIを介してライブで取得することもできます。これは、私が現在行っていることです。1日ビットスタンプのインデックスを作成した後、bitstampUSD.csvをダウンロードし、完全な全体像を示すためにデータを付加しました
ヌレッティン

2
@Lykegenes 2列目は何ですか?値は0.5〜33の範囲であり、為替レートUSD / BTCにすることはできません。
holdenlee 2014年

4
bitcoincharts.comデータの大きなギャップに注意してください。ティックの「購入/販売」情報がないことにも注意してください。
Petr Javorik 2017

2
@theJermこれはUNIXタイムスタンプ形式なので、UTCタイムゾーンでの
1970

2
Litecoin、Ethereum、またはその他の重要なコインのデータはどこで入手できますか?
skan 2017

31

ここには多くの履歴データがあります:https : //www.quandl.com/data/BCHARTS-Bitcoin-Charts-Exchange-Rate-Data


1
SOではリンクのみの回答は推奨されません。また、データ自体だけでなく、データを取得する方法も探しています。
fancyPants 2013

1
あなたの言う通り、私はもっと包括的に答えるべきだったのに。ただし、データを取得するためのAPI呼び出しがページの右側にリストされているため、彼の要求には答えます。
ショーン

リンクが壊れている
ギヨームシュヴァリエ


1
素敵で面白いサイト。私が気に入っているもう1つのサービスは、walletinvestor.com / forecast / bitcoin-predictionで、AIと機械学習を使用して、短期および長期の投資のために、暗号通貨の毎日の価格予測を行います。
ジョニー

15

場合によっては、websocketからビットスタンプ取引データを収集したいあなたは以下のスクリプトlog_bitstamp_trades.pyを使用することができ、より長い時間をかけて、より高い解像度では。

スクリプトはpython websocket-clientおよびpusher_client_pythonライブラリを使用するため、それらをインストールします。

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

およびlogrotateファイル構成

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

InfluxDBなどの時系列ストアを使用すると、優れた改善になります。
MrYellow 2017年

7

BitstampにはJSONこのリンクから公開されているライブビットコインデータがあります。 10分以内に600回を超えてアクセスしようとしないでください。アクセスすると、IPがブロックされます(さらに、いずれにせよ不要です。詳しくはこちらをご覧ください)。以下は、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 INSERTCSV


4

この場合のJavaの例を書きました:

json.orgライブラリを使用して、JSONObjectsおよびJSONArraysを取得します。以下の例では、JSONObjectとして取得できるblockchain.infoのデータを使用しています。

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

これはどのライブラリを使用していますか?
マイケルA

標準JSON:json.org
domi

4

CoinbaseにはREST APIがあり、Webサイトから過去の価格にアクセスできます。データは、約10分ごとのコインベーススポット価格(米ドル)を示しているようです。

結果はCSV形式で返されます。APIを使用して、必要なページ番号を照会する必要があります。1ページあたり1000件の結果(または価格ポイント)があります。これは、1ページあたり約7日分のデータです。


4

Node.jsで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 installcat bitstampUSD-2014-9-9.json問題はありませんでした。機能させることに投資している場合は、StackoverflowのコメントではなくGithubに持っていきましょう。バグレポートを残しますか?
f1lt3r 2017年

あなたのコードが1分のスケールでビットコイン価格の完全な履歴を取得できることを理解しているなら?
Mayeul sgc 2017年

はい、そうです
f1lt3r 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.