What the TradingBot does for you
The TradingBot is your disciplined, never-tired execution layer. It takes your active configuration — which symbols to trade, which mode they’re assigned to, how much capital is available, what the kill-switch state is — and translates it into real orders on your exchange. It then watches every order through to fill, manages every position through to closure, and records every event for you to inspect. You authored the rules (or picked a pre-built mode that encodes them). The TradingBot enforces them — every minute, every fill, every restart, every exchange outage.Places real orders
Manages positions through the full lifecycle
Watches every fill in real time
Reconciles state continuously
Respects exchange rate limits
50 orders per 10 seconds) so the bot never gets temporarily IP-banned mid-trade.Records every decision
Survives restarts gracefully
Honours your kill switch
Single-exchange per container — by design
Supported exchanges
The TradingBot supports 17 hand-tuned, production-ready exchanges out of the box. Each profile is individually tuned for the venue’s specific signing scheme, symbol naming convention, lot/tick precision rules, error codes, and rate-limit envelope. An additional 64 exchange profiles exist in validation status — they work but haven’t completed the full hand-tuning pass.Global majors (8)
Global majors (8)
- Binance — the most-tested venue; the canonical reference exchange. Most operators start here.
- Bybit — strong global liquidity, EU-compliant variant available (Bybit EU under MiCA).
- OKX — deep order book, broad symbol coverage. Note: OKX uses dash-separated symbols (
BTC-USDTvs Binance’sBTCUSDT). - KuCoin — diverse altcoin coverage; useful for symbols Binance doesn’t list.
- MEXC — wide altcoin coverage at the speculative end; lower liquidity than the top tier.
- Gate.io — broad listing, good fee structure.
- HTX (Huobi) — long-established Asian venue.
- BingX — newer entrant, growing liquidity.
US-regulated (2)
US-regulated (2)
- Binance.US — restricted symbol set vs global Binance, US-resident accounts only.
- Coinbase Advanced — strong regulatory standing, fee structure favours larger volumes.
EU-regulated (2)
EU-regulated (2)
- Bybit EU — MiCA-compliant variant for EU residents.
- Bitvavo — Netherlands-based, EUR-quoted markets, strong EU compliance.
Long-established (4)
Long-established (4)
- Kraken — one of the oldest crypto exchanges; strong reputation.
- Bitfinex — long history, sophisticated API.
- Poloniex — long-established US-origin venue.
- BitMart — global venue with broad listings.
Specialty (1)
Specialty (1)
- Crypto.com Exchange — paired with the Crypto.com app ecosystem; specific symbol set.
What the TradingBot actually does, end-to-end
A complete trade cycle inside the TradingBot looks like this:Read configuration
Evaluate buy conditions
Size the order correctly
Submit the buy order
Watch for fill via WebSocket
Place the sell ladder
+0.25%, +0.5%, +1%, +2%, +3%, +4%, +5% above the entry price. The bot submits each rung as a limit sell order to the exchange.Manage the position
Close the position
What you need to give the TradingBot
The TradingBot needs three things to operate. Get these right at setup, and almost everything else takes care of itself.Exchange API credentials with the right permissions
Exchange API credentials with the right permissions
- ✅ Read — required, for market data and account balance queries.
- ✅ Spot trading — required, for placing buy and sell orders.
- ❌ Withdrawals — NEVER ENABLE THIS. unCoded never needs to withdraw your funds. Leaving withdrawal permission disabled means even a worst-case key compromise cannot drain your account.
- ❌ Futures / margin — disabled unless you’ve explicitly chosen a mode that requires them (most modes are spot-only).
- ❌ Internal transfers — disabled. Sub-account transfers require explicit operator action via the venue’s UI.
- IP allow-list the API key to your VPS’s static IP. This means even a leaked key cannot be used from any other machine.
- Verify the key shows correct permissions: “Enable Reading” + “Enable Spot & Margin Trading” — nothing else.
view and trade scopes — never transfer.On OKX, set the IP allow-list and verify the API mode is “Trade” (not “Read” alone).Exchange ID and supporting environment
Exchange ID and supporting environment
EXCHANGE_ID— one ofbinance,bybit,okx,kraken,coinbase, etc. Determines which venue profile is used.<EXCHANGE>_API_KEYand<EXCHANGE>_SECRET_KEY— your credentials for that venue.recvWindow=60000(Binance-family) — the milliseconds the exchange will tolerate between order timestamp and exchange-side receive.60000is the operator-recommended setting; don’t reduce it without specific reason.- Database connection — environment variables pointing at your local database.
.env file template provided in the One-Click bundle has every variable pre-listed. You fill in the values; the TradingBot reads them on startup.Active configuration in the database
Active configuration in the database
How the TradingBot handles edge cases
A trading bot’s worth is measured by how well it handles bad days, not good ones. Here’s what happens in the cases that matter.Brief network outage (seconds to a few minutes)
Brief network outage (seconds to a few minutes)
Exchange outage (minutes to hours)
Exchange outage (minutes to hours)
Rate limit hit (the bot is sending too fast)
Rate limit hit (the bot is sending too fast)
50 orders per 10 seconds, with separate ceilings for other request types). The TradingBot reserves headroom — typically operating well below the published ceiling — so this should rarely happen in normal operation.If a burst does push the bot over the limit, the venue returns a 429 Too Many Requests. The TradingBot’s response: log the rejection, sleep for the indicated cooldown (or a default of 30 seconds), and resume. Normal operation continues; the offending order is retried after cooldown.Repeated rate-limit hits indicate a misconfiguration, not a normal-operation problem. If you see this pattern, the Dashboard’s logs will tell you which pair / mode is generating excessive orders. Most often it’s a sell-ladder rung-count or buy-split count that’s too aggressive for the venue.Min-notional rejection (order too small)
Min-notional rejection (order too small)
$10 for most majors, but symbol-specific). If your buy ladder’s split sizing produces an order below this floor, the venue would reject the order with an error code (Binance: -1013 “Filter failure: MIN_NOTIONAL”).The TradingBot pre-checks every order against the venue’s known min-notional and does not submit orders that would be rejected. The mode’s buy split that produced the under-floor order is logged so you can re-tune; you never get a mysterious “the bot didn’t trade” without explanation.Common cause: insufficient capital for the chosen mode’s split count. If you’re running BasicMode (7-split buy) with $30 of buying power, each split is ~$4 — well below the floor. The fix: more capital, or a fewer-split mode (Tsl2Sell, MarketMakerMinimal).Insufficient balance (you tried to spend more than you have)
Insufficient balance (you tried to spend more than you have)
-2010 “Account has insufficient balance”. The TradingBot logs the rejection and does not retry the same order — the configuration that produced it is wrong, and retrying without operator intervention would just re-trigger.Common causes: capital was withdrawn from the exchange while the bot was running; another bot (or you manually) traded the same balance; the mode’s per-buy investment is configured larger than the actual free quote.The Dashboard’s logs surface the rejection clearly. The fix is operator action: top up the balance, adjust the mode’s investment-per-buy, or close other positions to free balance.API key revoked or expired
API key revoked or expired
VPS reboot (planned or unplanned)
VPS reboot (planned or unplanned)
- Connects to the database, reads the active configuration.
- Connects to the exchange’s REST + WebSocket endpoints.
- Runs a full reconciliation against the exchange — pulls open orders, pulls recent trades, compares against its local state.
- Detects any fills that happened during downtime and updates its records.
- Resumes normal operation.
15–60 seconds. During the gap, open sell rungs and stop orders on the exchange continued honouring — exchange-side orders are independent of your VPS being alive.The one weakness: if the trailing stop would have re-priced upward during the downtime (because the price made new highs), it doesn’t catch up — on reboot the trailing stop is at its last server-side level. For most modes this is a minor edge case; for tight trailing-only modes, plan VPS reboots during quieter sessions.Database unreachable
Database unreachable
Exchange returns an unrecognised error
Exchange returns an unrecognised error
Operator control surface
The TradingBot has no operator UI of its own — all operator interactions flow through the Dashboard. The TradingBot reads from the database; the Dashboard writes to the database; the TradingBot picks up the changes on its next configuration poll.Toggle the kill switch
Add or remove trade pairs
Change a pair's mode
Edit mode parameters
Allocate capital per pair
Stream live logs
Pre-built modes the TradingBot ships with
The TradingBot can run one of 9 pre-built modes out of the box. Each is a complete strategy specification — buy-ladder shape, sell-ladder rungs, trailing-stop policy, capital sizing — and lives as a JSON file inside the TradingBot’s image.Mode 4 — BasicMode (default, recommended starter)
Mode 4 — BasicMode (default, recommended starter)
+0.25% to +5%. Designed for sideways and lightly-trending markets. Recommended capital: ~$20,000.Most operators start here. The 7 sell-ladder rungs at 0.25, 0.5, 1, 2, 3, 4, 5 percent ensure that any non-trivial upward move closes at least part of the position. The buy ladder’s 7 splits give the position room to absorb dips before being fully invested.No trailing stop — exits are purely the sell ladder. Suitable for operators who want predictable, mechanical behaviour.Mode 1 — FullBullMarket
Mode 1 — FullBullMarket
Mode 2 — LongTimeLongMoreProfit
Mode 2 — LongTimeLongMoreProfit
Mode 3 — LongTimeLong
Mode 3 — LongTimeLong
Mode 5 — LowMoney
Mode 5 — LowMoney
$3,000–$5,000.Mode 6 — MinimalMoney
Mode 6 — MinimalMoney
Mode 7 — Tsl2Sell
Mode 7 — Tsl2Sell
Mode 1001 — MarketMaker (FDUSD only)
Mode 1001 — MarketMaker (FDUSD only)
FDUSD quote asset. Recommended capital: $20,000+.Posts maker-only orders on both sides of the book, profiting from rebates rather than directional moves. Only viable on Binance FDUSD pairs which have a maker rebate structure.Mode 1002 — MarketMakerMinimal (FDUSD only)
Mode 1002 — MarketMakerMinimal (FDUSD only)
Capital and rate-limit guidance
Capital sizing is the single biggest operator decision affecting whether the TradingBot can actually trade your chosen mode effectively.Why capital affects whether a mode can trade
Why capital affects whether a mode can trade
total_capital / N. The exchange enforces a minimum-notional floor (Binance: $10 for most majors, varies by symbol).If total_capital / N < min-notional, the mode cannot place per-split orders that the exchange will accept. The bot will skip orders, log the reason, and your fill rate collapses.Worked example: BasicMode has 7 buy splits. With $30 of capital allocated to a pair, each split is ~$4 — under the $10 floor. The bot effectively cannot trade. With $140 (20` — clears the floor.The recommended capitals listed above are calibrated so each mode’s split count produces orders comfortably above the min-notional, with headroom for symbols whose floor is higher than the typical $10.Reserve recommendation: 50% of trading capital
Reserve recommendation: 50% of trading capital
- Drawdown averaging. If a position moves against you and your buy ladder fully invests, the reserve lets you take additional positions on other pairs without compounding stress.
- Adding to drawdowns. Some operators use the reserve to extend the buy ladder beyond the mode’s default — if a position is
-15%underwater and the reserve permits, an additional buy can lower the average entry. - Operational headroom. Exchange fees, occasional re-entry into a closed position, and capital for adding new pairs come from the reserve.
- Sleep-at-night insurance. A reserve means you’re never running 100% deployed; an unexpected market event has cushion.
$20,000 is your trading capital, hold an additional ~$10,000 in your exchange account as reserve. Total exchange balance: ~$30,000. The bot trades with $20,000; the rest sits as headroom.Rate-limit envelope per exchange
Rate-limit envelope per exchange
| Exchange | Order rate limit | Bot envelope (typical) |
|---|---|---|
| Binance spot | 50 orders / 10s per IP | bot uses ~30 / 10s peak |
| Bybit | 100 orders / 5s | bot uses well under |
| OKX | 60 requests / 2s | bot stays under |
| Coinbase Advanced | 15 orders / s | bot stays under |
| Kraken | tier-dependent | bot stays under default tier |
The recvWindow setting (Binance-family)
The recvWindow setting (Binance-family)
recvWindow parameter on signed requests — the maximum milliseconds between the order’s timestamp and the exchange’s receive time. If the bot’s clock and the exchange’s clock differ by more than this window, orders are rejected with a timestamp error.The operator-recommended value is 60000 (60 seconds). This is generous enough to absorb normal clock drift, brief network latency spikes, and minor VPS time-sync issues without losing orders. Reducing it below 60000 rarely helps and risks spurious rejections.The TradingBot also runs a periodic NTP-based clock check internally; if your VPS clock drifts substantially you’ll see warnings in the logs before order rejections start.Multi-exchange operation patterns
Once you outgrow a single exchange — by capital, by symbol coverage, or by jurisdictional preference — the natural pattern is multiple TradingBot containers.Pattern 1 — One exchange, one bot (the starter)
Pattern 1 — One exchange, one bot (the starter)
$15,000–$25,000 on Binance for 1+ month and feel the rhythm. Now you want to add a second venue for symbol coverage or jurisdictional reasons.Pattern 2 — Two exchanges, two bots (the standard scale-up)
Pattern 2 — Two exchanges, two bots (the standard scale-up)
Pattern 3 — One bot per sub-account on the same venue
Pattern 3 — One bot per sub-account on the same venue
Pattern 4 — Geographic distribution
Pattern 4 — Geographic distribution
5–20ms reduction in order round-trip.Cons: significant operational complexity. Multiple VPSs to manage. Most modes do not benefit from this latency reduction enough to justify the operator overhead.Honest recommendation: don’t bother unless you’ve outgrown single-VPS operation and have a specific reason to optimize latency. The pre-built modes were designed for 100ms+ latencies; sub-50ms is a luxury, not a requirement.What the TradingBot does NOT do
Operational footprint
Resource cost
100–300 MB RAM per TradingBot container at idle, scaling modestly with the number of active pairs. Sub-percent CPU at idle, brief spikes during configuration polls and reconciliation. A single VPS comfortably runs 2–4 TradingBot containers (one per exchange) on the recommended 4 vCPU / 8 GB / 80 GB NVMe SSD profile.Network calls
Data storage
Failure mode
Startup time
15–60 seconds — depending on database availability and the size of the reconciliation pass on first connect.Update cadence
Common questions
Can I have the TradingBot trade multiple symbols at once?
Can I have the TradingBot trade multiple symbols at once?
5–15 active pairs per exchange. Going above 20 starts to put pressure on the rate-limit envelope; consider splitting across multiple TradingBot containers if you need a much larger active set.Can I run two different modes on the same pair?
Can I run two different modes on the same pair?
- Run two TradingBot containers, each with its own API credentials and sub-account.
- Container A trades
BTCUSDTon Mode 4. - Container B trades
BTCUSDTon Mode 1.
What happens if I change a mode's parameters mid-trade?
What happens if I change a mode's parameters mid-trade?
How fast does the bot react to a market move?
How fast does the bot react to a market move?
100–500ms. A trailing-stop re-pricing (when a new high is made) is in the same range.The bot is not a high-frequency trading system — it’s not optimized to shave microseconds off latency. For its intended modes (multi-minute to multi-day trades), the WebSocket-driven response time is more than adequate.Can the TradingBot trade futures, perpetuals, or margin?
Can the TradingBot trade futures, perpetuals, or margin?
What's the difference between a mode and a strategy?
What's the difference between a mode and a strategy?
Does the TradingBot manage stop-losses?
Does the TradingBot manage stop-losses?
-15% to -25% from entry, mode-specific). When the stop is hit, the position is closed at market.Most modes also have a trailing stop that arms once a configured profit threshold is reached. The trailing stop is locally re-priced as new highs are made; once armed, it acts as a profit-protective floor.Mode 4 (BasicMode) does not have a trailing stop — its exit is purely the 7-rung sell ladder. This is intentional: it keeps the mode fully predictable and avoids the trailing-stop’s downtime weakness.The Modes panel in the Dashboard shows the exact stop-loss and trailing-stop configuration for each mode, and lets you edit them.Can I have the TradingBot only buy, not sell?
Can I have the TradingBot only buy, not sell?
canSell: false on the mode. The bot will continue placing buy orders but will not place new sell orders. Existing sell rungs already on the exchange continue to honour.This is occasionally useful if you want to take delivery of an asset rather than rotate it for profit. More commonly the inverse: canBuy: false to wind down a pair (let existing positions close out without opening new ones).What if the bot stops trading suddenly?
What if the bot stops trading suddenly?
MIN_NOTIONAL rejections.Fifth: have you been removed from your IP allow-list? Some operators rotate VPSs and forget to update the API key’s allow-list.The Dashboard’s Logs panel is your first stop for any “the bot stopped trading” investigation. The bot is verbose by design — every refusal to trade is logged with a clear reason.Can I pause trading on just one pair?
Can I pause trading on just one pair?
canBuy: false (or canSell: false) on the mode that pair is using, or remove the pair from the active set entirely. Removed pairs continue managing existing positions to closure but will not open new ones.A more surgical approach: keep the pair active but flip the mode’s canBuy flag. Existing positions continue to manage; no new positions open. When you’re ready to resume, flip the flag back.What happens during a hard fork or symbol delisting?
What happens during a hard fork or symbol delisting?
Is the bot deterministic? Will the same market produce the same trades?
Is the bot deterministic? Will the same market produce the same trades?