Skip to main content

Library for cryptocurrency market information.

Project description

# libcryptomarket: Powerful cryptocurrency market analysis toolkit

## Objective

* Support API calls of top cryptocurrency exchanges

* Support trading and analysis tools for cryptocurrency market

The project aims to answer the following two questions:

1. How to get historical data, especially a long period, in a single query?

2. How to send exchange API query in an elegent fashion?

## Prerequisite

Python 3.5+

## Installation

You can install it via pip for static version

```
pip install libcryptomarket
```

or development version

```
pip install git+https://github.com/libcryptomarket/libcryptomarket.git
```

## Exchanges supported

| Exchange | Public API | Private API |
|---|---|---|
| [Bitfinex](https://docs.bitfinex.com/v2/docs/ws-general) | v | x |
| [BitMEX](https://www.bitmex.com/api/explorer/) | v | x |
| [Bittrex](https://bittrex.com/home/api) | v | x |
| [CoinMarketCap](https://coinmarketcap.com/api/) | v | x |
| [GDAX](https://docs.gdax.com/#api) | v | x |
| [Poloniex](https://poloniex.com/support/api/) | v | v |

## Basic Usage

### Generic API

You can just make a simple call to query the same function from different
exchanges. For example, if you want to get the historical data from GDAX and
Bitfinex in a 5 minute timeframe, just call

```
In [1]: from libcryptomarket.api import GdaxApi, BitfinexApi

In [2]: from libcryptomarket.core import historical_ticker

In [3]: from datetime import datetime

In [4]: ticker1 = historical_ticker(source=GdaxApi(), symbol="BTC-USD", period=300, start_time=datetime(2017, 12, 30, 12, 0, 0), end_time=datetime(2017, 12, 31, 12, 0, 0))

In [5]: ticker2 = historical_ticker(source=BitfinexApi(), symbol="tBTCUSD", period="5m", start_time=datetime(2017, 12, 30, 12, 0, 0), end_time=datetime(2017, 12, 31, 12, 0, 0))
```

The historical data query automatically rolls over if the exchange response
chunk a long period data. It can guarantee that you do not need to write your
own logic to get a long period of data.


### Exchange API

You can easily initialize an exchange API client and call any method stated
in the exchange API official documentation. The return value is always
the native response from library `requests`.


For example, to get GDAX order book information,

```
In [1]: from libcryptomarket.api import GdaxApi

In [2]: exchange = GdaxApi()

In [3]: exchange.products_book(product_id="BTC-USD").json()
Out[3]:
{'asks': [['14903.01', '22.60310282', 18]],
'bids': [['14903', '3.4933731', 2]],
'sequence': 4757644393}
```

Also, to buy order in Poloniex,

```
In [1]: from libcryptomarket.api import PoloniexApi

In [2]: exchange = PoloniexApi(public_key="<your public key>", private_key="<your private key>")

In [3]: exchange.buy(currencyPair="BTC_LTC", rate=0.001, amount=0.1, postOnly=1)
```

The exchange API methods are always delimited by underscore.

| Exchange | Method | libcryptomarket | URL |
|---|---|---|---|
| [Bitfinex](https://docs.bitfinex.com/v2/docs/ws-general) | [candles](https://docs.bitfinex.com/v2/reference#rest-public-candles) | `BitfinexApi().candles(timeframe="1m", symbol="tBTCUSD", session="hist")` | https://api.bitfinex.com/v2/candles/trade:1m:tBTCUSD/hist |
| [BitMEX](https://www.bitmex.com/api/explorer/) | [trades/bucketed](https://www.bitmex.com/api/explorer/#!/Trade/Trade_getBucketed) | `BitmexApi().trade_bucketed(binSize="1m", symbol="XBTUSD")` | https://www.bitmex.com/api/v1/trade/bucketed?binSize=1m&symbol=XBTUSD |
| [Bittrex](https://bittrex.com/home/api) | [/public/getorderbook](https://bittrex.com/home/api) | `BittrexApi().get_order_book(market="BTC-LTC", type="both")` | https://bittrex.com/api/v1.1/public/getorderbook?market=BTC-LTC&type=both |
| [CoinMarketCap](https://coinmarketcap.com/api/) | [ticket/<id>/](https://coinmarketcap.com/api/) | `CoinMarketCapApi().ticker(id="bitcoin", convert="EUR")` | https://api.coinmarketcap.com/v1/ticker/bitcoin/?convert=EUR |
| [GDAX](https://docs.gdax.com/#api) | [/products/<product-id>/candles](https://docs.gdax.com/#get-historic-rates) | `GdaxApi().products_candles(product_id="BTC-USD")` | https://api.gdax.com/products/BTC-USD/candles |
| [Poloniex](https://poloniex.com/support/api/) | [returnOrderBook](https://poloniex.com/support/api/#returnOrderBook) | `PoloniexApi().return_order_book(currencyPair="BTC_NXT", depth=10)` | https://poloniex.com/public?command=returnOrderBook&currencyPair=BTC_NXT&depth=10 |

## Contribution

The project is targeting as a core but generic toolkit to query cryptocurrency
market, so we are happy if you join to contribute and make it better. Please
do not hesitate to contact us (gavincyi at gmail dot com).

=======
History
=======

0.1.0 (2017-11-07)
------------------

* First release on PyPI.

Project details


Download files

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

Source Distribution

libcryptomarket-0.1.13.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

libcryptomarket-0.1.13-py2.py3-none-any.whl (20.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file libcryptomarket-0.1.13.tar.gz.

File metadata

File hashes

Hashes for libcryptomarket-0.1.13.tar.gz
Algorithm Hash digest
SHA256 f63c55649757f85de20ee6b5617a8b70366f853560e85e7a39eb4238af0e74d1
MD5 216db0e1fcc85669ff806ac725d18efe
BLAKE2b-256 a05e5722ce07a3cc388cc178dcb665f3d4d22a5ed8f3e1ad23fc43e1f6a3afe8

See more details on using hashes here.

File details

Details for the file libcryptomarket-0.1.13-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for libcryptomarket-0.1.13-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2052782621dac0def881d832bf42c9a5fa9a9c8b5c243709766b72cce8663ac7
MD5 ae09b2dbd3d45b6e7930654706a6c468
BLAKE2b-256 c1e2defff91b1bc48121e7cd13d599222b7e3af197bed5cd967447c4c5021c70

See more details on using hashes here.

Supported by

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