Skip to main content

Documentation Index

Fetch the complete documentation index at: https://uncoded.ch/docs/llms.txt

Use this file to discover all available pages before exploring further.

Time budget: ~4 hours total spread over 1–2 days. The walkthrough is broken into 6 focused stages. Each stage is self-contained — pause and resume at any time.What you’ll have at the end: a self-hosted unCoded stack on your VPS, one connected exchange, one validated strategy running in shadow mode, and a clean path to going live with real capital after a one-week observation period.

Before you start — pre-flight checklist

  • Minimum capital you can afford to put at risk: $1,500 (smallest mode MinimalMoney). Below this, the bot’s grid math doesn’t work cleanly.
  • Recommended sweet spot: $15,000–$25,000. This is where most modes are tuned and where cost ratios are most efficient.
  • Reserve: plan to hold approximately 50% of your trading capital in reserve at the exchange. Mean-reversion modes scale into drawdowns; without a reserve, the strategy’s expected behavior is broken.
  • A fully KYC-verified account at one of the 17 production-ready exchanges.
  • 2FA enabled on the account itself (not just the API key).
  • Funded with at least your minimum trading capital.
  • Recommendation for first-timers: Binance (deepest liquidity, most-tuned profile). US: Coinbase Advanced. EU: Bybit EU or Bitvavo (MiCA-compliant).
  • A VPS at the 4 vCPU / 8 GB / 80 GB NVMe SSD baseline (€10–€15/month at hosts like Netcup or Hetzner).
  • Ubuntu LTS or similar Linux.
  • SSH access via a key (not password).
  • Stable outbound internet.
  • A regular Telegram account.
  • A new bot token from @BotFather (we’ll show you how).
  • A group or channel where the bot will post notifications.
  • You do not need to know any programming language.
  • You do not need a domain name (initial setup is fine on the IP address).
  • You do not need cloud accounts beyond your VPS provider.
  • You do not need a Bloomberg terminal or paid market data — exchange-public data is what the bot uses.

Stage 1 — Provision your server (~30 min)

1

Order a VPS at the documented baseline

Go to your VPS provider of choice and order:
  • 4 vCPU / 8 GB RAM / 80 GB NVMe SSD (the documented “full-stack-safe” minimum).
  • Ubuntu LTS (22.04 or 24.04).
  • Region close to your exchange if you want lower latency (e.g., Frankfurt or AWS us-east for Binance).
Use voucher code 36nc17472167990 at Netcup for a €5 discount.
2

Initial server hardening

Once your VPS is provisioned:
  • Set up SSH key authentication; disable password login.
  • Configure the firewall to allow only ports 22 (SSH), 80 (HTTP), 443 (HTTPS).
  • Enable automatic security updates.
  • Note your VPS’s static outbound IP — you’ll need it for exchange API key allowlisting. Find it with curl -s https://api.ipify.org from your VPS.
3

Install Docker and docker-compose

Install Docker and docker-compose (the only runtime dependencies unCoded needs).
At the end of Stage 1 you should be able to SSH into your VPS, run docker --version, and see your VPS’s outbound IP recorded somewhere. Take a 5-minute break. Stage 2 is more focused.

Stage 2 — Set up exchange API key safely (~30 min)

This is the single most security-critical step in the entire setup. Take it slowly.
Three rules that will save you sleep:
  1. Never enable withdrawals on a bot’s API key. unCoded does not need it; nothing should.
  2. Always IP-allowlist the key to your VPS’s outbound IP. A trading-only key without IP allowlist is usable from anywhere if it leaks.
  3. Use a sub-account (where the venue supports it) rather than your main wallet. This caps your worst-case exposure to whatever you funded the sub.
1

Log into your exchange

Open the venue’s web interface. Most have an “API Management” section under Settings. (See our per-venue guides: Binance, Bybit, OKX, Kraken, Coinbase Advanced.)
2

Create a new API key

Click “Create API.” Pass any 2FA challenges. Save the key and secret immediately — most venues show the secret only once.
3

Set permissions correctly

  • Enable: Spot Trading.
  • Disable: Withdrawals.
  • Disable: Internal Transfers (where exposed as a separate scope).
  • Disable: Margin / Futures unless your strategy explicitly uses them.
4

Set IP allowlist to your VPS's outbound IP

Paste the IP you noted in Stage 1. Save the API key.
OKX, KuCoin, and Coinbase Advanced also require a passphrase that you set during key creation. BitMart uses a User ID. Save these alongside the key and secret.

Stage 3 — Set up your Telegram bot (~15 min)

1

Create a Telegram bot via @BotFather

On Telegram, open @BotFather. Send /newbot. Choose a name. Choose a username ending in _bot. Save the token it gives you.
2

Create a group or channel for notifications

Create a Telegram group (or channel). Add your new bot to it. Make the bot an admin if it’s a channel.
3

Find the chat ID and your owner ID

Use @userinfobot to find your group ID and your personal user ID. Save both.

Stage 4 — Install the unCoded stack (~60 min)

1

Pull the unCoded deployment

SSH into your VPS. Clone the unCoded deployment template.
2

Configure environment

Create a configuration file with:
  • Your exchange API key, secret, and passphrase (if applicable)
  • Your Telegram bot token, group ID, and owner ID
  • A strong dashboard password (admin)
  • Optionally a viewer-only dashboard password
  • PostgreSQL password (auto-generated is fine)
3

Start the stack

Run the standard docker-compose up -d to bring up the four core services: database, trading engine, Telegram notifier, and dashboard. Wait for health checks to go green (~1 minute).
4

Open the dashboard

Navigate to your VPS’s address in a browser. You should see the unCoded login page. Log in with the admin password you set.
By the end of Stage 4, you should see the dashboard’s main panel with your exchange showing as “connected” and a green health indicator on every service. Take another break.

Stage 5 — Author and validate your first strategy (~90 min)

1

Pick a starting mode

From the dashboard, navigate to “Modes” and select:
  • MinimalMoney if you have $1,500–$3,000
  • LowMoney if you have $3,000–$10,000
  • BasicMode if you have $15,000–$20,000 (the default for most operators)
  • LongTimeLong if you have $25,000+
Set the per-exchange capital allocation appropriately.
2

Decide whether to author a custom strategy or use the mode's defaults

Each mode comes with its own buy-ladder and sell-ladder logic. For your first 30 days, we strongly recommend you let the mode’s defaults run on a single symbol like BTCUSDT. This is the lowest-risk way to learn the bot’s normal rhythm.After 30 days, you’ll have an intuition that lets you author smarter custom strategies in the SignalEditor. See Strategy Recipes when you get there.
3

Configure the active trading pair

From the dashboard, set tradePairs to BTCUSDT:4 (or whichever mode number you chose). This tells the bot to trade BTCUSDT under that mode’s rules.
4

Run a backtest first

Before you click “Start,” go to the Backtester and run a 6-month simulation of your chosen mode on your chosen pair. Read the results carefully — see How to read your backtest results for the metrics that matter.
5

If the backtest looks reasonable, run shadow mode

Activate the strategy in shadow mode — signals fire and are recorded, but no orders go to the exchange. Let it run for 24–48 hours.

Stage 6 — Go live (when you’re ready)

Do not skip the shadow-mode observation. Even if the backtest is excellent, real-time tape can produce signals you didn’t expect. The 24-48 hour shadow window is what protects you from “I went live and immediately lost money.”
1

Compare shadow signals against expectations

The dashboard’s signal history shows every shadow signal with its full context. Did the bot fire when you expected? Did it skip conditions you expected to trigger? If yes to both, you’re ready.
2

Promote the strategy to live mode

From the dashboard, switch the strategy from SHADOW to LIVE. The next time the trigger fires, it will produce a real order on your exchange.
3

Start with a fraction of intended capital

For your first live week, run with about 25% of the capital you eventually plan to allocate. This caps your worst-case downside while you learn the bot’s live rhythm on your specific market regime.
4

Watch your Telegram chat for the first trade

The first trade close is a milestone. Read the notification carefully — symbol, buy/sell prices, profit, profit %, running totals. If everything matches your expectations, you’re operating cleanly.
5

Schedule your first weekly review

Block 30 minutes one week from today. You’ll review the dashboard’s performance panel, the Telegram chat history, and any reconciliation alerts. This is the rhythm: 1 minute daily glance, 30 minutes weekly review, 90 minutes monthly assessment.

What to expect in the first month

You will check your Telegram chat way too often. That’s fine — it’s how you learn what “normal” looks like for your chosen mode and symbol.
You’ll start to recognize the bot’s daily rhythm: how many trades per day, how long positions stay open, how the sell ladder behaves. By the end of week 1, you should be able to predict roughly what the bot will do today.
By the end of month 1, you’ll have ~30–100 closed trades (depending on mode and regime). Now you have a real distribution to inspect: win rate, average win/loss, drawdown so far. This is when you start asking informed questions about whether the mode fits the regime.
Do not change the strategy or mode in week 1 in response to short-term noise. Three trades is not a sample size. Ten trades is barely. Fifty trades on the same setup is the floor for any meaningful conclusion. Operators who change weekly never accumulate a sample.

Common first-week issues

Most often: the kill switch is engaged, or the per-exchange enabled flag is off. Check the dashboard. See Common Issues for the diagnostic decision tree.
The IP allowlist on the API key doesn’t match your VPS’s actual outbound IP. Re-verify with curl -s https://api.ipify.org from inside the VPS, then re-paste in the exchange’s allowlist. See Error Codes.
Mode rules split your capital across a buy ladder. For example, BasicMode’s 7-split with 25% first rung means your first buy uses ~25% of the per-strategy allocation, not the full amount. This is by design — see Modes Overview.
Switch the TelegramBot’s notification mode from “per rung fill” to “aggregate per close.” Look in the dashboard’s notification settings.

Next steps

Module Deep Dives

Learn how each of the 6 modules works in detail.

Strategy Recipes

7 ready-to-implement strategies, from RSI mean-reversion to webhook-driven external signals.

Risk Management

The kill switch, capital allocation, trailing stops, and reserve discipline.

Glossary

Every term used in this documentation, defined in plain trader language.
Welcome to unCoded. From here, the most valuable thing you can do is let the system run for a full month before changing anything. Discipline beats cleverness, and the bot will teach you more about your own trading instincts in 30 days than any guide can.
Last modified on May 3, 2026