我在哪裡可以找到 Crypto Coin 數據?
我正在尋找加密貨幣數據的來源,最好是歷史數據,我可以用它來回測我的機器人和/或分析市場。
這個網上有可靠的來源嗎?交易所是否會提供歷史數據?
如果沒有,我該如何獲取這些數據?
獲取數據
您在這裡有兩個選擇:
- 查看線上數據提供者之一。Quandl為各種貨幣對和交易所提供(大部分)免費歷史數據。或者,如果您有閒錢,Coinigy可以按月定價模型提供高質量的數據集。
- 滾動您自己的數據爬蟲,使用您選擇的程式語言和可用於交換的各種 API。
我將在下面進一步討論這兩個選項。
從數據提供者獲取數據
顯然,此選項最方便,但也可能最昂貴,具體取決於您所需的數據質量。也不能保證您正在尋找的交易所、貨幣對和/或時間範圍存在於數據庫中。
總結:
為了:
- 耗時最少
- 數據可能會被清理和格式化
- 許多數據提供者提供跨多個數據集的統一數據佈局,便於比較它們。
缺點:
- 付費數據對業餘愛好者來說很昂貴(截至撰寫本文時,coinigy 的市場數據為 30 美元/月)
- 免費數據通常按原樣提供,讓您完成清理工作和後處理任務
- 如果數據被清理,可能會在您不知情的情況下出現偽影,從而影響您的研究結果。
滾動你自己的數據爬蟲
只需一點程式經驗和對 API 工作原理的基本了解,您就可以快速設置自己的數據採集工具。當然,有不同程度的困難,但從本質上講,事情很簡單:
- 選擇交易所
- 選擇一個 API
- 使用程式碼巫術掛鉤 API
- 開始下載數據
我將引導您完成必要的步驟(沒有程式碼 - 我覺得這是另一個 StackExchange 的主題;但是,我會將您連結到可以幫助您入門的庫)。
- 選擇交易所
我猜您已經完成了研究,因此,在考慮您要為其獲取數據的交易所時,只會指出一些事情:
確保他們有穩定的伺服器和連接(亞洲的交易所,例如,從歐洲訪問,連接不穩定)。否則,您的數據將遍布坑洞,甚至可能使其無用。
- 如果您絕對需要數據,請考慮租用更靠近交換伺服器中心物理位置的伺服器。
確保他們有有意義的音量。如果在設定的時間範圍內只有很少的交易量變化所有者(通常,24 小時交易量指標始終可用),那麼交易所可能不是一個很好的選擇。它扭曲了市場的畫面。
首先測試他們的客戶支持。如果您稍後在爬行過程中碰巧需要他們的幫助,那麼出色的支持人員可以讓一切變得不同。此外,它還為您提供了交易所基礎設施質量的一個小指標。
2.選擇一個
API
選擇正確的應用程序程式介面 (
API
) 取決於兩件事:
- 您需要的數據有多精細,
和
API
交易所必須提供什麼(顯然)。
REST API
s如果您對數據的 1 分鐘快照(即程式碼、訂單簿、交易等)感到滿意,那麼通過具象狀態傳輸(REST) API 請求數據就足夠了。這允許您向指定的 URL 發送
http
請求,並接收包含所請求數據的響應(通常為JSON
-format)。API的便利之
REST
處在於,它們在交換中的功能基本相同——發送請求、接收響應以及由您評估數據。有些交易所要求您使用不同的請求方法(例如POST
)而不是通常的GET
請求;然而,這通常只需要私有端點(私有意味著您需要先驗證自己,然後再接收您的帳戶餘額等數據),所以如果您只是在獲取市場數據,您不應該經常遇到它們。API 的一個限制
REST
是它們通常具有請求限制。最常見的限制是60 requests per minute
,但可以更嚴格(或更寬鬆 - Bitfinex 允許requests
每分鐘無限制)。一些交易所還使用請求計數器——這意味著某些請求會將您的IP
-connected 計數器增加某個值。根據您在交易所的狀態,此計數器會隨著時間的推移減少預定值。除此之外(如果你在想’好吧,嘿!那為什麼不每秒獲取數據呢?’),市場數據經常被記憶體。API 端點的快照會在設定的時間間隔內儲存,然後在伺服器端實際更新。因此,您可能每秒發送一個請求,但在刷新伺服器記憶體之前仍會收到相同的數據。
WS API
sWebSocket (
WS
) 和 WebSocketSecure ( ) API 是全雙工連接,允許使用者接收他們訂閱WSS
的一個或多個端點的接近實時的更新。API
全雙工只是意味著您不僅可以接收,還可以向WebSocket
連接發送數據。這在執行應該代表您進行交易的機器人時非常有用,因為回饋通常更快。原則上,您打開與
WS
API 的連接,並訂閱您想要數據的端點。通常,這由端點和配對分隔,但請務必查閱API
文件 - 一些交易所不使用channel subscription
模型,並且數據會在沒有進一步配置的情況下直接湧入。s的實現
WebSocket
範圍從瑣碎到復雜,因此希望對如何訪問某些交易所的WS
API 進行一些研究。雖然它們的原理系統保持不變,但許多交易所使用不同的協議和/或服務來提供數據——例如WAMP
協議和 Pusher,這增加了額外的複雜性,因為它們需要特定的客戶端來連接。但是,如果您需要逐筆交易數據,例如實時訂單簿建構,這就是您想要的。
FIX API
s(
Financial Information eXchange
)FIX
協議是始於 1992 年的標準,現在金融市場上的機構和經紀人普遍使用。迄今為止,它在交易所是最不可用API
的,實際發送市場數據的更少。它最常用於下訂單或取消訂單(例如在CoinbasePro)。然而,一些交易所通過 FIX 提供實時市場數據。請記住,您需要廣泛了解 FIX 協議,例如設置 FIX 引擎和代理以連接到交易所。在某些情況下,這可能會產生每月經常性費用。
- 使用程式碼掛鉤 API
根據您選擇的 API 以及您打算使用的程式語言,您有多種選擇。
許多交易所為其 API 提供客戶端庫,一些由交易所開發團隊自己開發,另一些由使用者貢獻(通常由開發團隊修改,然後在交易所網站上引用)。
還有許多其他庫,可能適用於任何語言(例如Python 3.x 的BitEx(沉迷於一些無恥的自我推銷),它統一了各種
REST
API
s 和一些WebSocket
API
s 的核心方法) .作為一名 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 參考
數據源
- Quandl.com
- Coinigy.com
- CoinDesk.com
- Investing.com
- Bitcoinchain.com
- Cryptodatasets.com
- CoinMarketCap.com
- 加密檔案
隨時在下面的評論中添加、更正或更新任何此內容!謝謝。