Delta Exchange (delta.exchange) broker adapter for freqtrade — installable freqtrade plugin (REST Phase-1, websockets Phase-2).
Project description
freqtrade-delta-exchange
A standalone, installable freqtrade adapter for
Delta Exchange (delta.exchange) futures trading — packaged as a proper
freqtrade plugin so it works with uv pip install / pip install even if the
upstream pull request is never merged.
Why this exists
ccxt.delta exposes every required futures primitive (createOrder, setLeverage,
setMarginMode, stop-market / trigger orders, fetchPositions, fetchFundingRate,
and a testnet via set_sandbox_mode), but its has capability map
under-reports them — so freqtrade's generic-Exchange validation refuses it. This
adapter declares the real capabilities via _ft_has and maps the
order / margin / stop plumbing freqtrade expects.
Status
- Phase 1 (current): REST polling. Fully functional for live + demo trading. No websocket streaming yet (freqtrade falls back to REST polling).
- Phase 2 (TODO): native websockets (
wss://socket.delta.exchangecandles / orders / positions / book), matching the official exchanges.
International vs Delta India
The adapter supports both. Delta India is a separate entity with different endpoints, markets, and currencies:
| International Delta | Delta India | |
|---|---|---|
| Config flag | (default) | "india": true |
| Demo host | testnet-api.delta.exchange |
cdn-ind.testnet.deltaex.org |
| Live host | api.delta.exchange |
cdn.india.deltaex.org |
| BTC perp symbol | BTC/USDT:USDT |
BTC/USD:USD |
| Settle currency | USDT | USD (stake_currency: "USD") |
When "india": true:
"sandbox": true→ demo/testnetcdn-ind.testnet.deltaex.org(paper, no real money)"sandbox": false→ livecdn.india.deltaex.org
Note: earlier assumptions that
cdn.india.deltaex.orgis "only a CDN" were wrong — it is a fully working trading API host (authenticates, serves markets and balances). It is the correct live host for Delta India.
Capability gaps handled the official way
ccxt.delta under-reports several futures capabilities. Each is handled via
freqtrade's documented extension points — no global ccxt monkeypatch, no
false has flags:
- Funding-rate history:
fetchFundingRateHistoryraises "not supported yet". Override_fetch_funding_rate_historyto return[](freqtrade already gates it viaexchange_has("fetchFundingRateHistory")→ graceful skip, no back-adjustment). - Leverage tiers:
fetchLeverageTiersunsupported. Declare it in_ft_has["exchange_has_overrides"]and overrideget_leverage_tiers()to return a permissive 0–100x tier (falls back to the config pair whitelist in backtest, where live markets aren't loaded). - Margin mode:
set_margin_modeisNotSupportedon Delta (defaults to cross);set_margin_mode()tolerates that silently.
Dry-run smoke test
user_data/strategies/dry_run_smoke/DryRunSmoke.py is a minimal always-enter
strategy (1m, enter then exit next candle) for exercising the broker plumbing
without waiting on a real signal. Pair it with
freqtrade-delta-exchange/examples/delta-india-demo-smoke.config.json. For a
direct (no-strategy) order test, place/cancel via the adapter's ccxt client on
the demo host.
2FA (TOTP)
Delta API keys with 2FA enabled must sign every request with the current TOTP in
the request password. Supply the base32 secret via the gitignored secrets file
(totp_secret) and the adapter computes a fresh code at client init:
{ "exchange": { "key": "...", "secret": "...", "totp_secret": "JGFRS7RYJWMJWDKV" } }
Demo vs Live (International)
| Goal | Setting |
|---|---|
| Paper / demo trading | "sandbox": true → testnet-api.delta.exchange |
| Live trading | "sandbox": false → api.delta.exchange |
Delta India note:
sandbox: trueroutes to the India demo/testnet hostcdn-ind.testnet.deltaex.org(paper, no real money).sandbox: falseis liveapi.india.delta.exchange.
Install
# From PyPI (published)
pip install freqtrade-delta-exchange
# Or, from a local checkout (editable)
uv pip install -e ./freqtrade-delta-exchange
# or
pip install -e ./freqtrade-delta-exchange
Use
// in your freqtrade config.json
{
"exchange": {
"name": "delta", // resolves to the installed Delta adapter
"sandbox": true, // true = Delta testnet (demo/paper), false = live
"key": "...", // keep keys OUT of this file — see below
"secret": "..."
},
"trading_mode": "futures",
"margin_mode": "cross"
}
Never commit API keys. Put them in a separate gitignored file and layer it:
freqtrade trade -c config.json -c delta-secrets.json
delta-secrets.json:
{ "exchange": { "key": "YOUR_KEY", "secret": "YOUR_SECRET" } }
Demo vs Live
| Goal | Setting |
|---|---|
| Paper / demo trading | "sandbox": true → testnet-api.delta.exchange |
| Live trading | "sandbox": false → api.delta.exchange |
Contributing upstream
This adapter is structured to be submitted as a freqtrade PR (drop
freqtrade_delta_exchange/delta.py into freqtrade/exchange/delta.py and add
Delta to freqtrade/exchange/__init__.py + SUPPORTED_EXCHANGES).
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file freqtrade_delta_exchange-0.1.0.tar.gz.
File metadata
- Download URL: freqtrade_delta_exchange-0.1.0.tar.gz
- Upload date:
- Size: 195.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
330b66911a701100fba68984c2650e27e1aa30ce2b997b8f0e8e52a32bd1dfec
|
|
| MD5 |
06b0ebaebe2fea58c527e88d92e56b30
|
|
| BLAKE2b-256 |
924a6c3ca7fc8f74752bf9285e3e335074fa4d31dec65030702f8594bab5fc75
|
File details
Details for the file freqtrade_delta_exchange-0.1.0-py3-none-any.whl.
File metadata
- Download URL: freqtrade_delta_exchange-0.1.0-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e641caa89dee73c3c1b55a232a9e10259cdbb1e55f5f0c937d3dc53970cac8a5
|
|
| MD5 |
3a79fa18ee8d94bb09474d034d2d0e45
|
|
| BLAKE2b-256 |
c29780094dd243036e661dd89349c80840ee4f30805372beb3e0e6f4061464cf
|