Skip to main content

Cryptocurrency feed handler and synthetic NBBO feed

Project description

Cryptocurrency Exchange Feed Handler

License
Python
Build Status
Codacy Badge
PyPi

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.

Please see the examples for more code samples.

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), L3_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(channels=['USDT-BTC'], callbacks=trade_cb))
fh.add_feed(Gemini(pairs=['BTC-USD'], callbacks=gemini_cb)

fh.run()

Supports the following exchanges:

  • Bitfinex

  • Coinbase

  • Poloniex

  • Gemini

  • HitBTC

  • Bitstamp

  • BitMEX

  • Kraken

  • Binance

  • EXX

  • Huobi

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 received both create two feedhandler objects. Not all exchanges support, as some exchanges send complete books on every update.

Backends

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

Supported Backends:

  • Redis

  • Arctic

  • ZeroMQ

  • UDP Sockets

  • TCP Sockets

  • Unix Domain Sockets

  • InfluxDB

  • MongoDB

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

  • Postgres

  • RabbitMQ

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

cryptofeed-0.20.2-py3-none-any.whl (72.3 kB view details)

Uploaded Python 3

File details

Details for the file cryptofeed-0.20.2-py3-none-any.whl.

File metadata

  • Download URL: cryptofeed-0.20.2-py3-none-any.whl
  • Upload date:
  • Size: 72.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.1

File hashes

Hashes for cryptofeed-0.20.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2fb36dc481ea0e3809b7e842e87be2329936e7185adc587d9d56d403abf00286
MD5 a67d6b671b842576997c34942bf11d86
BLAKE2b-256 76cffb50b059f15a72e96a5b37e64b7e155f5adf50bab84676d79edb59a09e59

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page