Cryptocurrency feed handler and synthetic NBBO feed
Project description
Cryptocurrency Exchange Feed Handler
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:
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
Built Distribution
Hashes for cryptofeed-0.20.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fb36dc481ea0e3809b7e842e87be2329936e7185adc587d9d56d403abf00286 |
|
MD5 | a67d6b671b842576997c34942bf11d86 |
|
BLAKE2b-256 | 76cffb50b059f15a72e96a5b37e64b7e155f5adf50bab84676d79edb59a09e59 |