Python bindings for the Cryptowatch API. Cryptocurrency markets, assets, instruments and exchanges data.
Project description
Cryptowatch Python SDK
The Cryptowatch Python library provides a convenient access to the Cryptowatch API from applications written in the Python language.
It includes the following features:
- Auto-serialization of API responses into Python objects
- API credentials automatically read from your
~/.cw/credentials.yml
config file - Custom exceptions for API-specific issues (e.g.: Requests Allowance)
- Smart back-off retries in case of API connectivity loss
Installation
pip install cryptowatch-sdk
Requirements
- python v3.7+
- requests v0.8.8+
- marshmallow v3.2.2+
- pyyaml v5.1.2+
API Crendential
Using a credential file will allow you to authenticate your requests and grant you the API access of your account tier (Free, Basic or Pro).
Setup your credential file
- Generate an Cryptowatch API key from your account
- Create your credential file on your machine by running in order:
2.1
mkdir $HOME/.cw
2.2echo "apikey: 123" > $HOME/.cw/credentials.yml
(where123
is your 20 digits public key) - Verify with
cat $HOME/.cw/credentials.yml
that you see something like below (123
being your public key):
apikey: 123
The SDK will read your public key as soon as import cryptowatch
is ran in your script.
Usage
REST API
import cryptowatch as cw
# Assets
cw.assets.list()
cw.assets.get("BTC")
# Exchanges
cw.exchanges.list()
cw.exchanges.get("KRAKEN")
# Instruments
cw.instruments.list()
cw.instruments.get("BTCUSD")
# Markets
cw.markets.list() # Returns list of all markets on all exchanges
cw.markets.list("BINANCE") # Returns all markets on Binance
# Returns market summary (last, high, low, change, volume)
cw.markets.get("KRAKEN:BTCUSD")
# Return market candlestick info (open, high, low, close, volume) on some timeframes
cw.markets.get("KRAKEN:BTCUSD", "ohlc", periods=["4h", "1h", "1d"])
# Returns market last trades
cw.markets.get("KRAKEN:BTCUSD", "trades")
# Return market current orderbook
cw.markets.get("KRAKEN:BTCUSD", "orderbook")
# Return market current orderbook liquidity
cw.markets.get("KRAKEN:BTCUSD", "liquidity")
Logging
Logging can be enabled through Python's logging
module:
import logging
logging.basicConfig()
logging.getLogger("cryptowatch").setLevel(logging.DEBUG)
CLI
The module exposes a simple utility, via the -m
option, to return last market prices.
By default it returns Kraken's BTCUSD market
> python -m cryptowatch
7425.0
Add another Kraken market to return this market last price
> python -m cryptowatch btceur
6758.1
You can also specify your own exchange
> python -m cryptowatch binance:ethbtc
0.020359
When the market doesn't exist a return code of 1
will be set (0
otherwise):
> python -m cryptowatch binance:nosuchmarketusd
> echo $?
1
Testing
Unit tests are under the tests folder and use pytest
, run them all with:
make test
Integration tests sending real HTTP requests to the Cryptowatch API can be run with:
make test-http-real
Development
Testing and developement dependencies are in the requirements.txt file, install them with:
pip install -r requirements.txt
The code base use the Black linter, run it with:
make lint
License
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 Distribution
Built Distribution
Hashes for cryptowatch_sdk-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1af9500df5e6506044bf287664cb5f6e1d193a38dce9ffbc23ce5bfe2793cc18 |
|
MD5 | 424d801ef80937cfdb0ac9aca1351ab5 |
|
BLAKE2b-256 | 22714d888c231c446a91665626ada42a17b18dd1dad2b9b7edb6e02cd2cc9784 |