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.

Most operator issues fall into a small number of categories. This page is the catalog — find your symptom, follow the fix. If your issue isn’t here, see the more specific Error Codes, Connection Problems, or Escalation pages.

Issues with the bot not trading

Most common causes, in priority order:
  1. Kill switch is ON. Most common. Check the Dashboard’s main panel. Flip OFF if you intended to be trading.
  2. Exchange-side outage. Check the venue’s status page. If down, the bot waits for connection.
  3. Rate limit being hit. Logs show 429 or -1003. Bot auto-cools-down; persistent hits mean over-aggressive configuration.
  4. Min-notional rejections. Per-split sizing below exchange floor (Binance: typically $10). Increase capital or switch to fewer-split mode.
  5. Insufficient balance. Capital was withdrawn or another bot consumed it. Top up or adjust mode’s investment-per-buy.
  6. API key revoked at venue. Logs show authentication errors. Generate new key, update Dashboard.
  7. IP allowlist mismatch. Logs show -2015 (Binance) or equivalent. Update venue’s allowlist to your VPS’s current IP.
Most common causes:
  1. SignalEditor strategy with wrong trigger mode. once_per_minute instead of once_per_bar_close floods signals.
  2. New volatility regime. Mode triggering more buy signals due to faster price movement.
  3. Newly-added pair without expected characteristics. New symbol may have very different behavior.
  4. Configuration drift. A canBuy: true flip happened that shouldn’t have.
Fix: investigate the trigger frequency in Logs. Identify which pair/mode is over-trading. Adjust trigger mode or pause the over-trading pair.
Most common causes:
  1. Sell ladder rungs too far above entry. If price hasn’t recovered to the first sell rung, position stays open.
  2. Mode’s canSell: false — was set somewhere, prevents sell-side activity.
  3. Stop-loss disabled and price has fallen substantially. Without a stop, no automatic exit.
  4. Position is held in a regime mismatch — buy ladder fully invested, price below all sell rungs.
Fix: review per-pair positions in Live Trades panel. Decide manually whether to close, hold, or wait. Re-engage canSell: true if accidentally disabled.
Most common causes:
  1. Mode parameters changed without your awareness. Verify in Modes panel.
  2. Multiple modes fighting over the same pair. Should be single-mode-per-pair.
  3. Symbol’s tick precision differs from expectation. Bot rounds to venue’s lot/tick rules.
  4. Stale configuration from incomplete update. Restart container.
Fix: Modes panel review, configuration verification, container restart.

Issues with the Dashboard

Most common causes:
  1. Wrong password. Try the password from your password manager. If you’ve forgotten it, reset via the SSH-level configuration.
  2. Browser cookies/cache. Clear cookies for the dashboard domain, retry.
  3. TLS / certificate expired. Browser warns about HTTPS issue. Renew Let’s Encrypt cert (if Caddy, this should auto-renew).
  4. IP allowlist at reverse proxy. If you’ve allowlisted IPs, verify your current IP is on the list.
Fix: try simpler causes first; rarely need to involve VPS-level recovery.
Most common causes:
  1. Database connection issue. Dashboard reads from database; if connection broken, displays last cache.
  2. Dashboard container needs restart. docker-compose restart dashboard.
  3. Browser cached old state. Refresh the page, then hard-refresh (Ctrl+Shift+R).
Most common causes:
  1. Browser blocking server-sent events. Try a different browser.
  2. Dashboard container’s host-Docker-socket access broken. Check container deployment configuration.
  3. TradingBot container not running. Logs panel needs an active container to stream from.
Most common causes:
  1. Frankfurter API unreachable. Currency conversion depends on it. Retry later.
  2. Date range too large. Try smaller chunks (one month at a time).
  3. Database query timeout for very long histories. Run during quieter operational hours.

Issues with notifications

Most common causes:
  1. TelegramBot container not running. Restart it.
  2. Telegram bot token expired/revoked. Generate new token via BotFather; update environment variable.
  3. Chat ID changed. Verify chat ID matches the configured value.
  4. Telegram API outage. Check Telegram’s status; usually resolves quickly.
  5. Database has no new closed trades. Bot is doing nothing to notify about. Verify TradingBot is running.
Most common causes:
  1. Bot was offline during a trade. Telegram missed it; database has it.
  2. Database restored from backup. Running total reset.
  3. Manual close not reflected in one of the surfaces.
Fix: Dashboard’s analytics are the source of truth. Telegram running total is for convenience.

Issues with strategies

Most common causes:
  1. Strategy not started. Hit “Start” in the SignalEditor.
  2. Trigger mode is once — fires only once per strategy lifetime. Restart the strategy to reset.
  3. Conditions too tight. Preview shows zero signals. Loosen thresholds.
  4. SignalEditor scheduler not running. Verify SignalEditor container is up.
  5. Webhook URL is misconfigured. SignalEditor fires but SignalsBot doesn’t receive.
Most common causes:
  1. Trigger mode once_per_minute instead of once_per_bar_close. Switch the trigger.
  2. Conditions too loose. Tighten thresholds.
  3. No trend filter on a mean-reversion strategy. Add EMA-filter condition.
Most common causes:
  1. Live data differs slightly from historical (real-time vs cached).
  2. Custom indicator computation has subtle look-ahead bias in preview that’s not present in live.
  3. Latency causes live to evaluate differently than preview.
Fix: contact support for investigation. Preview-equals-live is a design goal; deviations are bugs.

Issues with backtesting

Most common causes:
  1. Workers occupied. Backtester has concurrency cap; queued backtests wait.
  2. Symbol historical data not yet imported. First backtest of a symbol triggers data fetch from venue.
  3. Date range too large for the engine. Try smaller windows.
  4. Strategy JSON is malformed. Validate the JSON before submitting.
Fix: wait, retry with smaller window, validate JSON.
Most common causes:
  1. Look-ahead bias in custom strategy. Indicator computed with future data leakage.
  2. Fee or slippage assumption too low. Update parameters.
  3. Survivorship bias on long-tail altcoins.
  4. Curve-fitting to a single window. Validate on multiple windows.
See Backtesting Common Mistakes for the full catalog.

Issues with venue connectivity

See Connection Problems for the dedicated guide.
  • Connection drops: usually transient. Bot auto-reconnects. Reconciliation handles missed events.
  • IP allowlist mismatch: most common cause of authentication failures. Verify VPS IP matches venue’s allowlist.
  • API key revoked: regenerate at the venue, update Dashboard, restart bot.
  • Exchange outage: check the venue’s status page. Wait through. Bot resumes when venue returns.

Issues with VPS / infrastructure

Most common causes:
  1. Logs filling up disk. Configure log rotation (most operators inherit from default Docker config).
  2. Database growing without bound. Periodically purge old data if you’re storing more than your retention policy needs.
  3. Backups stored locally instead of off-site. Move backups to off-site storage.
Fix: log rotation, database vacuum, off-site backups.
Most common causes:
  1. Provider network issue. Status page check.
  2. Geographic distance to exchange. If you’re a US operator on EU VPS trading Binance, latency is higher than necessary.
  3. VPS provider over-subscription — your “shared” VPS is contended.
Fix: try a different provider/region, check provider status.
Most common causes:
  1. Configuration error. Check logs immediately on restart attempts.
  2. Database connection issue. Ensure database container started before depending containers.
  3. Out of memory. Larger backtests or many active strategies can exceed memory budget.
  4. Recent update incompatibility. Roll back if needed.
Fix: read the logs, address the root cause, restart.

When to engage the kill switch during troubleshooting

If you’re investigating an unfamiliar issue and want to remove “still trading” from the variables: kill switch ON.The bot pauses new buying. Existing positions continue managing. You investigate without ongoing risk. Re-enable when you’re confident the issue is resolved.False alarms are free; real alarms are real.

Best practices for troubleshooting

  • Read the logs first — Dashboard’s Logs panel surfaces most issues with clear messages.
  • Try simple causes first — restart, kill switch, refresh, before deeper investigation.
  • Engage kill switch when investigating — removes one variable from the situation.
  • Document each incident in your operator log — pattern recognition helps future you.
  • Don’t make multiple changes simultaneously — change one variable at a time during diagnosis.
  • Cross-reference with documentation — most issues are documented somewhere.
  • Use the operator community — many issues have been encountered before.
  • Escalate to support when documentation and community don’t resolve.
  • Don’t panic-close positions during stress — patience usually serves better.
  • Maintain backups — you might need them.

What’s next

Error codes

Per-venue error code reference.

Connection problems

Connectivity-specific troubleshooting.

Escalation

When and how to escalate.

Support

Reaching out for help.

Daily operations

Routines that catch issues early.

Monitoring

Spotting problems before they’re crises.
Last modified on May 3, 2026