Skip to main content
TACAVAR
Trading Systems

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.