Blockchain Exchange Python API
Table of Contents
Generated with DocToc
Last Update: 2020-05-17
Features
-
Subscribe to all websocket channels available at blockchain.com | exchage:
- Heartbeat :hearts:
- Orderbook L2 :blue_book:
- Orderbook L3 :green_book:
- Prices :atm:
- Symbols :symbols:
- Ticker :chart_with_upwards_trend:
- Trades :currency_exchange:
- Trading :bank: :closed_lock_with_key:
- Balance :moneybag: :closed_lock_with_key:
-
Subscription to new channels doesn't require client restart
-
Create Market orders
-
Create Limit orders
All API is available through a websocket client:
import logging
from bcx.client import BlockchainWebsocketClient
logging.basicConfig(level=logging.INFO)
client = BlockchainWebsocketClient()
See our documentation for API reference and gallery of examples for more info.
Installation
In order to get started you should have Python>=3.6 installed.
For general use
This is as simple as running
pip install bcx
For development
-
Get source code
git clone git@github.com:ilya-bc/blockchain-exchange-api.git cd blockchain-exchange-api
-
Install package in editable mode. Since there are hundred ways to do that, a standardised way for this project is with
Makefile. It will create virtual environment withpipenvbased onpython==3.7and install all necessary dependencies for developmentmake install-dev -
If you don't have
pipenvor prefer to manage a virtual environment using different tools, then you can usepip install -e '.[dev]'
-
In order to build documentation
(cd docs && make html) open docs/build/html/index.html
:exclamation: Important: Building documentation will execute example scripts, so be extremely cautious when writing sample scripts that make use of trading channel.
Prerequisites for trading
Actual trading and accessing balance of your account requires authentication with an API key. In order to get one:
-
You should have an account at blockchain.com | exchange
-
Create API key here and store information. Note, you can have setup key with permissions
viewandview & trade. -
You should receive an email asking you to activate API key.
-
Setup the following environment variable
export BLOCKCHAIN_API_SECRET="__ENTER_YOUR_API_SECRET_HERE__"
:fire: Tip: If you use pipenv then you can just put it into .env file (ignored by git) at the root of the cloned directory
Demos
Listen to all public channels
:pencil2: Note: There are time.sleep(2) between calling different methods, in order to be able to see intermediate results.
Create market and limit orders
:pencil2: Note: Both orders got rejected (expected behaviour) because of invalid quantity and price being to big.
TODO
- Tests
- Something weird is going on with unsubscribing from channels in bulk for the following ones:
[
{"channel": "l2", "symbol": "BTC-USD"},
{"channel": "ticker", "symbol": "BTC-USD"},
{"channel": "trades", "symbol": "BTC-USD"}
]
- Check contradiction with API docs on prices channel
[
{"seqnum":1,"event":"subscribed","channel":"prices","symbol":"BTC-USD","granularity":60},
{"seqnum":2,"event":"subscribed","channel":"prices","symbol":"ETH-USD","granularity":60},
{"seqnum":3,"event":"subscribed","channel":"prices","symbol":"BTC-USD","granularity":300},
{"seqnum":4,"event":"subscribed","channel":"prices","symbol":"ETH-USD","granularity":300}
]
- Docs doesn't say that ticker channel sends update events
[
{"seqnum":0,"event":"subscribed","channel":"ticker","symbol":"BTC-USD"},
{"seqnum":1,"event":"snapshot","channel":"ticker","symbol":"BTC-USD","price_24h":8744.9,"volume_24h":155.77132628,"last_trade_price":8881.0},
{"seqnum":2,"event":"updated","channel":"ticker","symbol":"BTC-USD","price_24h":8754.8,"volume_24h":155.70446581}
]
Metadata
Release files for bcx 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bcx-0.2.1.tar.gz | 3.0 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bcx-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.0 MB
Release files / bcx-0.2.1.tar.gz
| Download URL | bcx-0.2.1.tar.gz |
|---|---|
| Size | 3.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
60b6d9f33c815deb2653d790236d2de749d6abb7fc7293621452f696c22c33ac
|
|
BLAKE2b-256 checksum How to use checksums |
ac3072f7e4c860555cffc618a510eee87afbf14242a064aea9b02eea66873481
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7
|
Release files / bcx-0.2.1-py3-none-any.whl
| Download URL | bcx-0.2.1-py3-none-any.whl |
|---|---|
| Size | 13.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0a85da69d192e28bc5331fcb2b4c446ff789ca9e78719af84346805b9cfa49ce
|
|
BLAKE2b-256 checksum How to use checksums |
db508bf458cfe198909a6b50aa790117167e0dcaeae1457bb5245597baf431b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7
|