Currencies

我在哪裡可以找到 Crypto Coin 數據?

  • June 6, 2019

我正在尋找加密貨幣數據的來源,最好是歷史數據,我可以用它來回測我的機器人和/或分析市場。

這個網上有可靠的來源嗎?交易所是否會提供歷史數據?

如果沒有,我該如何獲取這些數據?

獲取數據

您在這裡有兩個選擇:

  1. 查看線上數據提供者之一Quandl為各種貨幣對和交易所提供(大部分)免費歷史數據。或者,如果您有閒錢,Coinigy可以按月定價模型提供高質量的數據集。
  2. 滾動您自己的數據爬蟲,使用您選擇的程式語言和可用於交換的各種 API。

我將在下面進一步討論這兩個選項。


從數據提供者獲取數據

顯然,此選項最方便,但也可能最昂貴,具體取決於您所需的數據質量。也不能保證您正在尋找的交易所、貨幣對和/或時間範圍存在於數據庫中。

總結:

為了:

  • 耗時最少
  • 數據可能會被清理和格式化
  • 許多數據提供者提供跨多個數據集的統一數據佈局,便於比較它們。

缺點:

  • 付費數據對業餘愛好者來說很昂貴(截至撰寫本文時,coinigy 的市場數據為 30 美元/月)
  • 免費數據通常按原樣提供,讓您完成清理工作和後處理任務
  • 如果數據被清理,可能會在您不知情的情況下出現偽影,從而影響您的研究結果。

滾動你自己的數據爬蟲

只需一點程式經驗和對 API 工作原理的基本了解,您就可以快速設置自己的數據採集工具。當然,有不同程度的困難,但從本質上講,事情很簡單:

  1. 選擇交易所
  2. 選擇一個 API
  3. 使用程式碼巫術掛鉤 API
  4. 開始下載數據

我將引導您完成必要的步驟(沒有程式碼 - 我覺得這是另一個 StackExchange 的主題;但是,我會將您連結到可以幫助您入門的庫)。

  1. 選擇交易所

我猜您已經完成了研究,因此,在考慮您要為其獲取數據的交易所時,只會指出一些事情:

  • 確保他們有穩定的伺服器和連接(亞洲的交易所,例如,從歐洲訪問,連接不穩定)。否則,您的數據將遍布坑洞,甚至可能使其無用。

    • 如果您絕對需要數據,請考慮租用更靠近交換伺服器中心物理位置的伺服器。
  • 確保他們有有意義的音量。如果在設定的時間範圍內只有很少的交易量變化所有者(通常,24 小時交易量指標始終可用),那麼交易所可能不是一個很好的選擇。它扭曲了市場的畫面。

  • 首先測試他們的客戶支持。如果您稍後在爬行過程中碰巧需要他們的幫助,那麼出色的支持人員可以讓一切變得不同。此外,它還為您提供了交易所基礎設施質量的一個小指標。

2.選擇一個API

選擇正確的應用程序程式介面 ( API) 取決於兩件事:

  1. 您需要的數據有多精細,

  1. API交易所必須提供什麼(顯然)。

REST APIs

如果您對數據的 1 分鐘快照(即程式碼、訂單簿、交易等)感到滿意,那麼通過具象狀態傳輸(REST) API 請求數據就足夠了。這允許您向指定的 URL 發送http請求,並接收包含所請求數據的響應(通常為JSON-format)。

API的便利之REST處在於,它們在交換中的功能基本相同——發送請求、接收響應以及由您評估數據。有些交易所要求您使用不同的請求方法(例如POST)而不是通常的GET請求;然而,這通常只需要私有端點(私有意味著您需要先驗證自己,然後再接收您的帳戶餘額等數據),所以如果您只是在獲取市場數據,您不應該經常遇到它們。

API 的一個限制REST是它們通常具有請求限制。最常見的限制是60 requests per minute,但可以更嚴格(或更寬鬆 - Bitfinex 允許requests每分鐘無限制)。一些交易所還使用請求計數器——這意味著某些請求會將您的IP-connected 計數器增加某個值。根據您在交易所的狀態,此計數器會隨著時間的推移減少預定值。

除此之外(如果你在想’好吧,嘿!那為什麼不每秒獲取數據呢?’),市場數據經常被記憶體。API 端點的快照會在設定的時間間隔內儲存,然後在伺服器端實際更新。因此,您可能每秒發送一個請求,但在刷新伺服器記憶體之前仍會收到相同的數據。

WS APIs

WebSocket ( WS) 和 WebSocketSecure ( ) API 是全雙工連接,允許使用者接收他們訂閱WSS的一個或多個端點的接近實時的更新。API全雙工只是意味著您不僅可以接收,還可以向WebSocket連接發送數據。這在執行應該代表您進行交易的機器人時非常有用,因為回饋通常更快。

原則上,您打開與WSAPI 的連接,並訂閱您想要數據的端點。通常,這由端點和配對分隔,但請務必查閱API文件 - 一些交易所不使用channel subscription模型,並且數據會在沒有進一步配置的情況下直接湧入。

s的實現WebSocket範圍從瑣碎到復雜,因此希望對如何訪問某些交易所的WSAPI 進行一些研究。雖然它們的原理系統保持不變,但許多交易所使用不同的協議和/或服務來提供數據——例如WAMP協議和 Pusher,這增加了額外的複雜性,因為它們需要特定的客戶端來連接。

但是,如果您需要逐筆交易數據,例如實時訂單簿建構,這就是您想要的。

FIX APIs

( Financial Information eXchange)FIX協議是始於 1992 年的標準,現在金融市場上的機構和經紀人普遍使用。迄今為止,它在交易所是最不可用API的,實際發送市場數據的更少。它最常用於下訂單或取消訂單(例如在CoinbasePro)。然而,一些交易所通過 FIX 提供實時市場數據。

請記住,您需要廣泛了解 FIX 協議,例如設置 FIX 引擎和代理以連接到交易所。在某些情況下,這可能會產生每月經常性費用。

  1. 使用程式碼掛鉤 API

根據您選擇的 API 以及您打算使用的程式語言,您有多種選擇。

許多交易所為其 API 提供客戶端庫,一些由交易所開發團隊自己開發,另一些由使用者貢獻(通常由開發團隊修改,然後在交易所網站上引用)。

還有許多其他庫,可能適用於任何語言(例如Python 3.x 的BitEx(沉迷於一些無恥的自我推銷),它統一了各種REST APIs 和一些WebSocket APIs 的核心方法) .

作為一名 Python 開發人員,我只能推薦使用它。特別是如果您不受環境的約束。requests例如,使用該庫,您可以輕鬆查詢交易所:

import requests

# Get a list of all asset pairs at Kraken.com 
print(requests.get('https://api.kraken.com/0/public/AssetPairs').json())

4.開始下載數據

設置好數據爬蟲後,您需要發布它們!cron我個人通過作業執行 REST 爬蟲,並將Websocket爬蟲作為daemons. 但這取決於你。

獲取一組有意義的數據當然需要一些時間,但是很遺憾,您要麼用金錢支付,要麼用時間支付你想要的數據。

有用的連結

API 參考

數據源

隨時在下面的評論中添加、更正或更新任何此內容!謝謝。

引用自:https://bitcoin.stackexchange.com/questions/54710