Telegram Bots for Trading: Why We Chose Chat Over UI
We control our trading bot entirely through Telegram. No dashboard. No web interface. Just chat commands. Here's why chat beats UI for trading operations — and how to build your own.
Quick answer: Trading is reactive. Dashboards require you to check them. Telegram pushes alerts to you. When your bot needs human input at 3 AM, chat wins.
The Problem with Dashboards
We built a beautiful Next.js dashboard. Real-time charts. Position tracking. P&L analytics. It looked great.
Nobody used it.
Here's why:
- Passive monitoring: Dashboards don't alert you. You have to check them.
- Slow interaction: Click through menus, wait for pages to load, find the right button.
- Mobile experience: Dashboards suck on phones. Trading doesn't stop when you leave your desk.
- Context switching: Open browser, navigate to URL, log in. By then, the moment passed.
Trading is reactive. You need alerts pushed to you. You need to act in seconds, not minutes.
So we killed the dashboard and moved everything to Telegram.
Why Telegram Won
Telegram is where we already are. It's on our phone. It's on our desktop. Notifications work. It's fast.
Telegram advantages:
- ✓ Push notifications (you see alerts immediately)
- ✓ Mobile + desktop (same interface everywhere)
- ✓ Fast commands (type /status, get instant response)
- ✓ Message history (full audit trail of alerts and actions)
- ✓ Free and reliable (no infrastructure to maintain)
We've been using Telegram for 21 days. 100% of bot interactions happen through chat. The dashboard? We only use it for viewing equity curves. All operations are Telegram commands.
Our Command Set
Here's every command we use to control the bot:
Status Commands
/status
Returns current portfolio value, 24h P&L, open positions, and system health.
/positions
Lists all open positions with entry price, current price, P&L, and stop-loss levels.
/health
System diagnostics: API connectivity, LLM latency, last poll time, error rate.
Control Commands
/pause
Halts all trading. Open positions remain active. Used during high volatility or when we need to intervene.
/resume
Resumes normal trading after a pause. Requires confirmation.
/close [symbol]
Closes a specific position immediately. Example: /close BTC-USD
/emergency
Closes ALL positions and pauses trading. Used only in catastrophic scenarios.
Configuration Commands
/setrisk [value]
Adjusts max position size. Example: /setrisk 3% (reduces from 5% to 3%)
/strategies
Lists all active strategies and their individual on/off status.
/toggle [strategy]
Enables or disables a specific strategy. Example: /toggle momentum
Alert Types
The bot pushes 4 types of alerts to Telegram:
Trade Execution Alerts
🟢 EXECUTED | BTC/USDT Long
Strategy: Mean Reversion | Entry: $68,420 | Size: 5% | Confidence: 87%
Veto Alerts
🔴 VETOED | ETH/USDT Long
Reason: ADX downtrend (28), price below EMA50 | Alternative: Wait for ADX < 25
System Alerts
⚠️ RATE LIMIT WARNING | Binance
Current: 1,150/1,200 requests/min | Action: Throttling non-critical requests
Daily Briefing
📊 Daily Briefing | Day 21/90
Portfolio: $10,244 (+2.44%) | 24h P&L: +$18.30 | Win rate: 60% (5W/3L) | System health: ✅
How We Built It
The Telegram bot is a simple Python service using the python-telegram-bot library.
Step 1: Create a Bot
Open Telegram, search for @BotFather, send /newbot. Follow the prompts. You'll get an API token.
Step 2: Get Your Chat ID
Send a message to your new bot. Then visit:
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates
Look for "chat": {"id": ...}. That's your chat ID.
Step 3: Basic Bot Code
Here's the skeleton:
Install: pip install python-telegram-bot
Then create a bot.py with command handlers for /status, /pause, /resume, etc. Each handler calls your trading bot's API or directly invokes functions.
Step 4: Authentication
Don't let just anyone control your bot. Check the chat ID on every message:
ALLOWED_CHAT_IDS = [123456789, 987654321] # Your chat IDs
if update.effective_chat.id not in ALLOWED_CHAT_IDS: return # Ignore unauthorized requests
What We'd Do Differently
Three weeks in, here's what we'd change:
- Inline keyboards: Instead of typing /close BTC-USD, use buttons. Faster, fewer typos.
- Scheduled digests: We want a /digest command that returns a formatted weekly summary, not just daily.
- Multi-bot setup: Separate alerts bot (read-only) from control bot (commands). Reduces noise in the command channel.
- Voice commands: "Close all ETH positions" via voice message. Telegram supports voice-to-text.
When a Dashboard Makes Sense
We're not anti-dashboard entirely. They're useful for:
- Historical analysis: Equity curves, win rate charts, strategy performance comparisons.
- Configuration UI: Toggling 20+ settings is easier with checkboxes than commands.
- External sharing: Investors or partners want a read-only view. A URL is easier than Telegram access.
Our hybrid approach: Telegram for operations, dashboard for analytics. 90% of interactions are Telegram.
The Bottom Line
Trading bots need human oversight. Make that oversight as frictionless as possible.
Telegram is where we already are. It's fast. It's reliable. It pushes alerts instead of requiring us to check.
Chat over UI. Every time.
Follow the 90-Day Challenge
Our Telegram bot runs 24/7 alongside our trading system. Every alert, every command, every veto — logged publicly as part of the challenge.