Skip to main content

dcex - DEX & CEX trading library

English | 繁體中文

dcex is a Rust-backed exchange library with synchronous and asynchronous Python clients and a standalone Rust crate. It covers market data, account queries, order APIs, and public and private WebSocket streams.

Broker codes: dcex does not set or attach a broker code or broker tag by default. You can specify one explicitly when the exchange API supports it.

Forked from krex, a simplified version of the ccxt Python library.

Python Rust License PyPI Crates.io

Installation

Python:

pip install dcex
# or, in a uv-managed project:
uv add dcex

Rust:

cargo add dcex

Key features

  • Synchronous and asynchronous Python HTTP clients, plus public and private WebSocket clients.
  • HTTP, WebSocket, and signing APIs for direct use from Rust.
  • A Product Table Manager (PTM) that normalizes exchange symbols and trading specifications.
  • Support for multiple CEX and DEX platforms; available endpoints vary by exchange.

Documented withdrawal, market-maker and partner endpoints are in scope; current coverage and specification gaps are recorded in the endpoint ledger. API withdrawals have no second confirmation; they execute on submit. Trading API keys should not have withdrawal permission. PTM includes listed options from Binance, Bybit, and OKX; option trading remains exchange-specific.

Supported exchanges

Exchange HTTP Sync HTTP Async WS Public WS Private
Binance Yes Yes Yes Yes
Bybit Yes Yes Yes Yes
OKX Yes Yes Yes Yes
Bitget Yes Yes Yes Yes
Kraken Yes Yes Yes Yes
MEXC Yes Yes Yes Yes
BingX Yes Yes Yes Yes
KuCoin Yes Yes Yes Yes
Hyperliquid Yes Yes Yes Yes
Lighter (Mainnet + Robinhood) Yes Yes Yes Yes
Backpack Yes Yes Yes Yes
Aster Yes Yes Yes Yes
Extended Yes Yes Yes Yes
Ondo Yes Yes Yes Yes
Arcus Yes Yes Yes Yes

Private WebSocket support includes authenticated or address-scoped user-data streams. Trading WebSocket APIs are available for Binance, Bybit, Bitget, OKX, KuCoin and Kraken Spot; Hyperliquid and Lighter accept signed actions, and Arcus provides signed request construction. Lighter Mainnet and Robinhood use separate credential profiles; select the network per client (Mainnet is the default); see .env.example and the Lighter examples. Ondo supports perpetual futures and public spot market data (depth, trades, symbol info and history), with spot product-table entries. Private spot trading remains blocked until its official API specification is published; see Ondo spot support.

Ondo spot rows are public-data products and are not privately tradable through this client. Use get_product_symbols(exchange="ondo", product_type="swap") when iterating perpetual trading symbols; spot WS uses exchange symbols such as SPY-USDC.

Endpoint coverage, limitations and verification.

Python quick start

Synchronous HTTP:

import dcex

client = dcex.binance()
print(client.get_klines(product_symbol="BTC-USDT-SWAP", interval="1m"))

Asynchronous HTTP:

import asyncio
import dcex.async_support as dcex

async def main():
    client = await dcex.binance()
    try:
        print(await client.get_klines(product_symbol="BTC-USDT-SWAP", interval="1m"))
    finally:
        await client.close()

asyncio.run(main())

Additional profiles cover Binance Alpha, Aster Prediction, KuCoin Classic/Pro and Kraken Spot V1. Bitget SBE returns raw binary frames for caller-side decoding.

Public WebSocket:

import asyncio
from dcex.ws import binance

async def main():
    async with binance.public() as ws:
        await ws.subscribe_agg_trades("BTC-USDT-SPOT")
        print(await ws.recv())

asyncio.run(main())

Product Table Manager

PTM maps normalized product_symbol values, such as BTC-USDT-SWAP, to exchange-native exchange_symbol values and exposes trading metadata. Clients use this mapping where applicable.

Fields Meaning
exchange, product_symbol, exchange_symbol Exchange and normalized/native symbols
product_type, exchange_type Normalized and exchange-specific market types
base_currency, quote_currency Product currencies
price_precision, size_precision Price and size increments
min_size, min_notional Minimum size and notional
size_per_contract Contract multiplier
from dcex.product_table.manager import ProductTableManager

table = ProductTableManager.get_instance("binance")
print(table.get_exchange_symbol("binance", "BTC-USDT-SWAP"))
print(table.get_product_symbol("binance", "BTCUSDT", product_type="swap"))
print(table.rows()[0])

More examples and development

Runnable examples are in Python sync, Python async and WebSocket, and Rust. They focus on public data or read-only account queries. Private HTTP examples require credentials; private stream examples require credentials or a user address.

uv run python examples/sync/binance_public.py
uv run python examples/async/binance_ws_public.py
cargo run -p dcex --example binance_ws_public

For direct Rust usage, see the crate README. The default test suite runs offline with uv run pytest; live suites are opt-in. See the contributing guide for development and testing details.

This project uses the MIT License; see the third-party notices for additional licenses.

Metadata

Release files for dcex 0.34.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dcex 0.34.0
File Size Uploaded
dcex-0.34.0.tar.gz 1.8 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for dcex 0.34.0
File Interpreter ABI Platform
dcex-0.34.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
dcex-0.34.0-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details
dcex-0.34.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details

Total release size: 47.6 MB

Release files / dcex-0.34.0.tar.gz

Download URL dcex-0.34.0.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
9abb4cba5a2c6241c8a5b961729c8fc710c4dcbb038e16f1b7261a25a224ecfd
BLAKE2b-256 checksum
How to use checksums
35cf4a35e817d7a25b460c411b93e284dec63f36f407abb02041886608870909
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / dcex-0.34.0-cp312-cp312-win_amd64.whl

Download URL dcex-0.34.0-cp312-cp312-win_amd64.whl
Size 16.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
8fd542413b27ac137606b8121a833b0369971cd5f71d43dae4c704893245d5e8
BLAKE2b-256 checksum
How to use checksums
cb70672d2c7694af6378767368aecc6e36dc03af36b10de27c710c3904398d6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / dcex-0.34.0-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL dcex-0.34.0-cp312-cp312-manylinux_2_34_x86_64.whl
Size 15.2 MB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
6b77b3342871c072e7655668224dddf615b8b25b5f91e7c344f1cc6b9404ee96
BLAKE2b-256 checksum
How to use checksums
5dfba790c25ea904229d187b9b6cd550446354c76c09e4dd48418872894179a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / dcex-0.34.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL dcex-0.34.0-cp312-cp312-macosx_11_0_arm64.whl
Size 14.3 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a5bee4b798e635a5103f02bdab472eb9fd32bb41a2c3a79de9187d09e25a7634
BLAKE2b-256 checksum
How to use checksums
63406b735b17169f4967b6576f739517af304d1425974c39271e21c1838ed49d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.42.0

4 release files

0.41.0

4 release files

0.40.0

4 release files

0.39.0

4 release files

0.35.0

4 release files

This release

0.34.0 This release

4 release files

0.33.0

4 release files

0.32.0

4 release files

0.31.0

4 release files

0.30.0

4 release files

0.29.1

4 release files

0.29.0

4 release files

0.28.5

4 release files

0.28.4

4 release files

0.28.3

4 release files

0.28.2

4 release files

0.28.1

4 release files

0.28.0

4 release files

0.27.0

4 release files

0.26.2

4 release files

0.26.1

4 release files

0.26.0

4 release files

0.25.0

4 release files

0.24.2

4 release files

0.24.1

4 release files

0.24.0

4 release files

0.23.0

4 release files

0.22.0

4 release files

0.21.2

2 release files

0.21.1

2 release files

0.21.0

2 release files

0.20.3

2 release files

0.20.2

2 release files

0.20.1

2 release files

0.20.0

2 release files

0.10.0

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page