cryptofeed

Cryptocurrency Exchange Feed Handler with synthetic NBBO

Github星跟蹤圖

Cryptocurrency Exchange Feed Handler

License
Python
Build Status
PyPi
Codacy Badge

Handles multiple cryptocurrency exchange data feeds and returns normalized and standardized results to client registered callbacks for events like trades, book updates, ticker updates, etc. Utilizes websockets when possible, but can also poll data via REST endpoints if a websocket is not provided.

Please see the examples for more code samples, the documentation or the FAQ for some oddities and gotchas.

from cryptofeed import FeedHandler

fh = FeedHandler()

# ticker, trade, and book are user defined functions that
# will be called when ticker, trade and book updates are received
ticker_cb = {TICKER: TickerCallback(ticker)}
trade_cb = {TRADES: TradeCallback(trade)}
gemini_cb = {TRADES: TradeCallback(trade), L2_BOOK: BookCallback(book)}


fh.add_feed(Coinbase(pairs=['BTC-USD'], channels=[TICKER], callbacks=ticker_cb)
fh.add_feed(Bitfinex(pairs=['BTC-USD'], channels=[TICKER], callbacks=ticker_cb)
fh.add_feed(Poloniex(pairs=['BTC-USDT'], channels=[TRADES], callbacks=trade_cb))
fh.add_feed(Gemini(pairs=['BTC-USD', 'ETH-USD'], channels=[TRADES, L2_BOOK], callbacks=gemini_cb)

fh.run()

To see an example of an application using cryptofeed to aggregate and store cryptocurrency data to a database, please look at Cryptostore.

Supports the following exchanges:

  • Binance
  • Binance US
  • Binance Jersey
  • Binance Futures
  • Bitcoin.com
  • Bitfinex
  • BitMax
  • BitMEX
  • Bitstamp
  • Bittrex
  • Bybit
  • Coinbase
  • Deribit
  • EXX
  • FTX
  • Gemini
  • HitBTC
  • Huobi
  • HuobiDM
  • Kraken
  • Kraken Futures
  • OKCoin
  • OKEx
  • Poloniex

Also provides a synthetic NBBO (National Best Bid/Offer) feed that aggregates the best bids and asks from the user specified feeds.

from cryptofeed.feedhandler import FeedHandler
from cryptofeed.exchanges import Coinbase, Bitfinex, HitBTC


def nbbo_ticker(pair, bid, ask, bid_feed, ask_feed):
    print('Pair: {} Bid: {} Bid Feed: {} Ask: {} Ask Feed: {}'.format(pair,
                                                                      bid,
                                                                      bid_feed,
                                                                      ask,
                                                                      ask_feed))


fh = FeedHandler()
fh.add_nbbo([Coinbase, Bitfinex, HitBTC], ['BTC-USD'], nbbo_ticker)
fh.run()

Supported Channels

Cryptofeed supports the following channels:

  • L2_BOOK - Price aggregated sizes. Some exchanges provide the entire depth, some provide a subset.
  • L3_BOOK - Price aggregated orders. Like the L2 book, some exchanges may only provide partial depth.
  • TRADES - Note this reports the taker's side, even for exchanges that report the maker side
  • TICKER
  • VOLUME
  • FUNDING
  • BOOK_DELTA - Subscribed to with L2 or L3 books, receive book deltas rather than the entire book on updates. Full updates will be periodically sent on the L2 or L3 channel. If BOOK_DELTA is enabled, only L2 or L3 book can be enabled, not both. To receive both create two feedhandler objects. Not all exchanges are supported, as some exchanges send complete books on every update.
  • *_SWAP (L2/L3 Books, Trades, Ticker) - Swap data on supporting exchanges
  • *_FUTURES (L2/L3 Books, Trades, Ticker) - Futures data on supporting exchanges
  • OPEN_INTEREST - Open interest data

Backends

Cryptofeeds supports backend callbacks that will write directly to storage or other interfaces

Supported Backends:

  • Redis (Streams and Sorted Sets)
  • Arctic
  • ZeroMQ
  • UDP Sockets
  • TCP Sockets
  • Unix Domain Sockets
  • InfluxDB
  • MongoDB
  • Kafka
  • Elastic Search
  • RabbitMQ
  • Postgres

Rest API

Cryptofeed supports some REST interfaces for retrieving historical data and placing orders. See the rest package.

Planned Work

Future Feeds

  • CEX
  • BTCC
  • Many more...

REST

Continue to build out rest endpoints and standardize exchange interfaces and data

Additional Callback Methods / Backends

  • Pulsar
  • More ZMQ improvements/options

Contributing

Issues and PRs are welcomed. If you'd like to discuss ongoing development please join the slack

主要指標

概覽
名稱與所有者bmoscon/cryptofeed
主編程語言Python
編程語言Python (語言數: 3)
平台
許可證Other
所有者活动
創建於2017-12-16 12:35:23
推送於2025-02-08 23:40:30
最后一次提交2025-02-08 18:36:23
發布數74
最新版本名稱v2.4.1 (發布於 )
第一版名稱v0.6.0 (發布於 )
用户参与
星數2.4k
關注者數78
派生數721
提交數2.5k
已啟用問題?
問題數513
打開的問題數80
拉請求數351
打開的拉請求數1
關閉的拉請求數79
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?