Single-screen summary of daemon, control plane, every deployed strategy. Exits
0 when everything is healthy; 1 with a list of issues when anything is
wrong. The output below is the fastest way to know which section of this page
to read.
qkt: HEALTHY
qkt 0.28.9 (424d5d9) built 2026-05-25T21:08:37Z
DAEMON running (uptime 12h5m)
CONTROL reachable
STRATEGIES
alpha running, 14 trades, up 12h5m
beta running, 3 trades, up 12h5m
When unhealthy, the issues land on stderr — pipe to tee or your alert
channel:
qktstatus--deep||echo"qkt is unhealthy — check logs"
┌────────────────────────────────────────────────────────────────────┐
│ Is the daemon running? │
│ qkt list → should print a table │
│ No? → see "Daemon won't start" │
└────────────────────────────────────────────────────────────────────┘
↓ yes
┌────────────────────────────────────────────────────────────────────┐
│ Is the strategy in the table? │
│ No? → see "qkt deploy fails" │
└────────────────────────────────────────────────────────────────────┘
↓ yes
┌────────────────────────────────────────────────────────────────────┐
│ Is the state column "running" / "active"? │
│ No? → see "Strategy stuck in a non-running state" │
└────────────────────────────────────────────────────────────────────┘
↓ yes
┌────────────────────────────────────────────────────────────────────┐
│ Are trades happening? │
│ No? → see "No trades firing" │
└────────────────────────────────────────────────────────────────────┘
↓ yes
┌────────────────────────────────────────────────────────────────────┐
│ Trades happening, results unexpected? │
│ → see "Trades not as expected" │
└────────────────────────────────────────────────────────────────────┘
qkt refuses to start: gateway bybit_linear reports another adapter, account or trade mode
expected_* settings do not match the gateway's /v1/health
Set expected_account_login / expected_trade_mode to what the gateway reports (demo on testnet). Bybit API errors and rate limits are the gateway's: see the Bybit adapter page
Symbol rejected on MT5 (symbol not found)
Broker uses a different symbol name
Check symbolPolicy in your broker profile — Exness adds m suffix
ERROR ... booking at market ... realized PnL is PROVISIONAL
Async-execution venue acknowledged a close with price 0.0 and the closing deal was not in history within ~3 s
The trade was booked at the closing-side quote; compare it with the venue's closing deal and correct the realized PnL. See engine close pricing
Position drift between qkt and broker
Manual trade on the venue, or magic-number collision
qkt's MT5StateRecovery reconciles on next daemon start; or restart
Use EVERY 5m or EVERY 15m for sweeps; reduce date range
Daemon or MT5 gateway high CPU when idle
Polling loops too aggressive
Tune tick_poll_interval_ms separately from the position/order poll_interval_ms; both are milliseconds and default to 1000. Keep reconciliation fast enough for pending-fill and OCO detection.