Coinbase Advanced Trade API client library.
Project description
Coinbase Advanced
Python library for the Coinbase Advanced Trade API.
Features
- Support for all the REST API endpoints through convenient methods.
- Automatic parsing of API responses into relevant Python objects.
- Unit Tests based on real responses using fixtures.
- Support for Cloud and Legacy Auth Schemas:
- Support for Cloud API Trading Keys (Recommended)
- Support for Legacy API Keys (Deprecated but supported in this library for backward compatibility reasons)
Example
from coinbaseadvanced.client import CoinbaseAdvancedTradeAPIClient
# Creating the client using Clould API Keys.
client = CoinbaseAdvancedTradeAPIClient.from_cloud_api_keys(API_KEY_NAME, PRIVATE_KEY)
# Listing accounts.
accounts_page = client.list_accounts()
print(accounts_page.size)
# Creating a limit order.
order_created = client.create_limit_order(client_order_id="lknalksdj89asdkl", product_id="ALGO-USD", side=Side.BUY, limit_price=".19", base_size=5)
Websocket usage
Here is a basic example of how to use the CoinbaseWebSocketClient:
import asyncio
import time
from client_websocket import CoinbaseWebSocketClient
def handle_candle_event(event):
print(f"Received event candle: {event}")
async def main():
api_key = "your-api-key"
private_key = "-----BEGIN EC PRIVATE KEY-----\n\n-----END EC PRIVATE KEY-----"
client = CoinbaseWebSocketClient(api_key, private_key)
client.subscribe(["BTC-EUR"], "candles", callback=handle_candle_event)
while True:
time.sleep(1)
if __name__ == "__main__":
asyncio.run(main())
Callback Functions
You can define your own callback functions to handle different types of events. The callback function will receive an event object that you can process as needed.
Heartbeat Subscription
For each subscription to a market data channel, a separate heartbeat subscription is automatically created. This helps to ensure that the connection remains open and active.
Concurrencyadding
Each subscription runs in a separate thread to ensure that multiple subscriptions can operate concurrently without blocking each other.
Coinbase API Rate Limits
Before using this library, it is highly recommended to read the Coinbase API rate limits (https://docs.cdp.coinbase.com/advanced-trade/docs/ws-best-practices/) to understand the constraints and avoid exceeding the limits.
Best Practices
It is also recommended to follow the WebSocket best practices (https://docs.cdp.coinbase.com/advanced-trade/docs/ws-best-practices/) provided by Coinbase for optimal performance and reliability.
Subscription Recommendations
If possible, subscribe to one symbol per subscription to help balance the load on the Coinbase server and improve the reliability of your data stream.
Installation
pip install coinbaseadvanced
Contributing/Development
Any and all contributions are welcome! The process is simple:
- Fork repo.
- Install Requirements:
pip install -r requirements.txt
. - Make your changes.
- Run the test suite
python -m unittest -v
. - Submit a pull request.
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
File details
Details for the file coinbaseadvanced-1.2.0-py3-none-any.whl
.
File metadata
- Download URL: coinbaseadvanced-1.2.0-py3-none-any.whl
- Upload date:
- Size: 31.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.8.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 058f6fee7360fee15e7fab06f32ac15f2c0abf148f2b696711cc46a13f9235c2 |
|
MD5 | 463c6696f36c82dce4fa18239a060461 |
|
BLAKE2b-256 | 686202a96c1b6665282c54195d116cc08abf263132819db95cb69042c9b020cc |