All Projects → bmoscon → Cryptofeed

bmoscon / Cryptofeed

Licence: other
Cryptocurrency Exchange Websocket Data Feed Handler

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Cryptofeed

Krypto Trading Bot
Self-hosted crypto trading bot (automated high frequency market making) written in C++
Stars: ✭ 2,589 (+302.64%)
Mutual labels:  bitcoin, cryptocurrency, coinbase, kraken, bitfinex, trading, binance, market-data, exchange
Trading Indicator
provide trading technical indicator values based on data of almost crypto currency exchanges
Stars: ✭ 31 (-95.18%)
Mutual labels:  coinbase, kraken, bitfinex, gemini, trading, binance, bittrex
Crypto vba
An Excel/VBA project to communicate with various cryptocurrency exchanges APIs
Stars: ✭ 103 (-83.98%)
Mutual labels:  bitcoin, coinbase, kraken, bitfinex, binance, bittrex, exchange
My Token
📈Track token prices of your favorite exchanges in terminal!
Stars: ✭ 141 (-78.07%)
Mutual labels:  bitcoin, cryptocurrency, kraken, bitfinex, binance, bittrex, exchange
Crypto Trading Bot
Cryptocurrency trading bot in javascript for Bitfinex, Bitmex, Binance, FTX, Bybit ... (public edition)
Stars: ✭ 1,089 (+69.36%)
Mutual labels:  cryptocurrency, coinbase, bitfinex, trading, binance, websocket, exchange
Exchangesharp
ExchangeSharp is a powerful, fast and easy to use .NET/C# API for interfacing with many crypto currency exchanges. REST and web sockets are supported.
Stars: ✭ 489 (-23.95%)
Mutual labels:  bitcoin, cryptocurrency, kraken, bitfinex, gemini, bittrex, exchange
Coinnect
Coinnect is a Rust library aiming to provide a complete access to main crypto currencies exchanges via REST API.
Stars: ✭ 130 (-79.78%)
Mutual labels:  bitcoin, cryptocurrency, kraken, trading, bittrex, exchange
Crypto Exchange
Pulls together list of crypto exchanges to interact with their API's in a uniform fashion.
Stars: ✭ 241 (-62.52%)
Mutual labels:  bitcoin, kraken, bitfinex, gemini, bittrex, exchange
Cryptocurrency Portfolio
Google Sheets automatic creation with Google Apps Script (GAS) for managing a cryptocurrency tracking spreadsheet with multi exchanges
Stars: ✭ 134 (-79.16%)
Mutual labels:  cryptocurrency, kraken, bitfinex, binance, bittrex, exchange
Algo Coin
Python library for algorithmic trading cryptocurrencies across multiple exchanges
Stars: ✭ 365 (-43.23%)
Mutual labels:  bitcoin, cryptocurrency, coinbase, kraken, gemini, exchange
Exchanges Php
This is a virtual currency SDK that brings together multiple exchanges
Stars: ✭ 134 (-79.16%)
Mutual labels:  coinbase, kraken, bitfinex, binance, bittrex, websocket
Nescience-Indexing-CLI
Nescience Software & Capital Rebalancing Tool
Stars: ✭ 26 (-95.96%)
Mutual labels:  coinbase, gemini, bitfinex, kraken, bittrex, binance
Ccxt.net
CCXT.NET – CryptoCurrency eXchange Trading Library for .NET
Stars: ✭ 89 (-86.16%)
Mutual labels:  bitcoin, cryptocurrency, trading, market-data, exchange
Ccxws
WebSocket client for 38 cryptocurrency exchanges
Stars: ✭ 341 (-46.97%)
Mutual labels:  cryptocurrency, coinbase, binance, websocket, exchange
Siis
Trading bot including terminal, for crypto and traditionals markets. Assisted or fully automated strategy.
Stars: ✭ 45 (-93%)
Mutual labels:  bitcoin, cryptocurrency, kraken, trading, binance
Kupi Terminal
Ccxt based, open source, customized, extendable trading platform that supports 130+ crypto exchanges.
Stars: ✭ 104 (-83.83%)
Mutual labels:  bitcoin, cryptocurrency, trading, binance, exchange
Coinbase Pro Node
Coinbase Pro API written in TypeScript and covered by tests.
Stars: ✭ 116 (-81.96%)
Mutual labels:  bitcoin, cryptocurrency, coinbase, trading, exchange
Stocklook
crypto currency library for trading & market making bots, account management, and data analysis
Stars: ✭ 119 (-81.49%)
Mutual labels:  bitcoin, cryptocurrency, coinbase, trading, bittrex
Orko
Trade on and script multiple crypto exchanges from a single user interface on desktop and mobile. In development.
Stars: ✭ 128 (-80.09%)
Mutual labels:  bitcoin, cryptocurrency, kraken, bitfinex, binance
Socktrader
🚀 Websocket based trading bot for 💰cryptocurrencies 📈
Stars: ✭ 152 (-76.36%)
Mutual labels:  bitcoin, cryptocurrency, trading, websockets, exchange

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.

Supported exchanges

Supported aggregated crypto data providers

Basic Usage

Create a FeedHandler object and add subscriptions. For the various data channels that an exchange supports, you can supply callbacks for data events, or use provided backends (described below) to handle the data for you. Start the feed handler and you're done!

from cryptofeed import FeedHandler
# not all imports shown for clarity

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(symbols=['BTC-USD'], channels=[TICKER], callbacks=ticker_cb))
fh.add_feed(Bitfinex(symbols=['BTC-USD'], channels=[TICKER], callbacks=ticker_cb))
fh.add_feed(Poloniex(symbols=['BTC-USDT'], channels=[TRADES], callbacks=trade_cb))
fh.add_feed(Gemini(symbols=['BTC-USD', 'ETH-USD'], channels=[TRADES, L2_BOOK], callbacks=gemini_cb))

fh.run()

Please see the examples for more code samples and the documentation for more information about the library usage.

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

National Best Bid/Offer (NBBO)

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

from cryptofeed import FeedHandler
from cryptofeed.exchanges import Coinbase, Gemini, Kraken


def nbbo_update(symbol, bid, bid_size, ask, ask_size, bid_feed, ask_feed):
    print(f'Pair: {symbol} Bid Price: {bid:.2f} Bid Size: {bid_size:.6f} Bid Feed: {bid_feed} Ask Price: {ask:.2f} Ask Size: {ask_size:.6f} Ask Feed: {ask_feed}')


def main():
    f = FeedHandler()
    f.add_nbbo([Coinbase, Kraken, Gemini], ['BTC-USD'], nbbo_update)
    f.run()

Supported Channels

Cryptofeed supports the following channels from exchanges:

Market Data Channels (Public)

  • 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.
  • OPEN_INTEREST - Open interest data.
  • CANDLES - Candlestick / K-Line data.

Aggregated data from provider is available in channel:

  • TRANSACTIONS - On-chain transactions.
  • MARKET_INFO - current aggregated price, market cap, volume (in USD, BTC or ETH currency), total and circulating supply, as well as community data (twitter, reddit, facebook...) and scores (coingecko, developer, community...)

Authenticated Data Channels

  • ORDER_INFO - Order status updates

Backends

Cryptofeed 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 (v1 and v2)
  • MongoDB
  • Kafka
  • Elastic Search
  • RabbitMQ
  • PostgreSQL
  • GCP Pub/Sub

Installation

Note: cryptofeed requires Python 3.7+

Cryptofeed can be installed from PyPi. (It's recommended that you install in a virtual environment of your choosing).

pip install cryptofeed

Cryptofeed has optional dependencies, depending on the backends used. You can install them individually, or all at once. To install Cryptofeed along with all its optional dependencies in one bundle:

pip install cryptofeed[all]

If you wish to clone the repository and install from source, run this command from the root of the cloned repository

python setup.py install

Alternatively, you can install in 'edit' mode (also called development mode):

python setup.py develop

See more options, explanations and Pipenv usage in INSTALL.md.

Rest API

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

Future Work

There are a lot of planned features, new exchanges, etc planned! If you'd like to discuss ongoing development please join the slack or open a thread in the discussions in GitHub.

Contributing

Issues and PRs are welcomed!

Cryptofeed wouldn't be possible without the help of many contributors! I owe them and all other contributors my thanks!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].