Разработка мобильного Telegram-бота с криптоторговлей
Telegram-бот для криптоторговли — это гибрид: бот на сервере обрабатывает команды и сигналы, мобильное приложение (или Telegram Mini App) служит UI для мониторинга и управления. Задача не тривиальная: торговые операции требуют надёжности, низкой латентности и безопасного хранения API-ключей бирж.
Архитектура: бот + мобильный клиент
Сам торговый бот живёт на сервере — Python с python-telegram-bot или aiogram, либо Node.js с grammy. Мобильное приложение (нативное или Telegram Mini App на React/Vue) — это дашборд и интерфейс управления.
Telegram Mini App встраивается прямо в Telegram через WebApp API — пользователь открывает его кнопкой в боте. Плюс: не нужен отдельный App Store релиз. Минус: ограниченные возможности по сравнению с нативным приложением, WebView-производительность.
Для полноценного мобильного трейдинг-клиента — нативное приложение с Telegram Bot API для уведомлений.
Интеграция с биржами
Binance, Bybit, OKX, Gate.io — все предоставляют REST и WebSocket API. Торговые операции через REST, real-time данные (orderbook, trades, баланс) — через WebSocket.
// iOS: WebSocket подключение к Binance для стримов цен
class BinanceWebSocketManager: ObservableObject {
@Published var currentPrice: Decimal = 0
private var webSocketTask: URLSessionWebSocketTask?
func connect(symbol: String) {
let url = URL(string: "wss://stream.binance.com:9443/ws/\(symbol.lowercased())@ticker")!
webSocketTask = URLSession.shared.webSocketTask(with: url)
webSocketTask?.resume()
receiveNextMessage()
}
private func receiveNextMessage() {
webSocketTask?.receive { [weak self] result in
switch result {
case .success(.string(let text)):
if let ticker = try? JSONDecoder().decode(BinanceTicker.self,
from: text.data(using: .utf8)!) {
DispatchQueue.main.async {
self?.currentPrice = Decimal(string: ticker.lastPrice) ?? 0
}
}
self?.receiveNextMessage()
case .failure(let error):
self?.handleReconnect(after: error)
default: break
}
}
}
}
Reconnect при разрыве — обязателен. WebSocket биржи рвётся при переходе в фон на iOS (система приостанавливает сеть). URLSessionWebSocketTask требует Background Modes → remote-notifications или polling как fallback.
Безопасное хранение API-ключей биржи
API-ключ биржи с правами на торговлю — критичные данные. На iOS — только Keychain с kSecAttrAccessibleWhenUnlockedThisDeviceOnly. На Android — Android Keystore System через EncryptedSharedPreferences или BiometricPrompt для подтверждения торговой операции.
Никогда не передавайте торговые ключи через Telegram-бота или QR-код в открытом виде. Правильный флоу: пользователь вводит ключи напрямую в мобильное приложение, они шифруются и хранятся локально. Бот на сервере получает доступ к ключам только через защищённый канал с мобильного при явном действии пользователя.
Торговые ордера: типы и обработка ошибок
Market order, limit order, stop-limit, trailing stop — каждый требует своей логики валидации на клиенте до отправки на биржу:
- Minimum order size (у Binance свой
minQtyдля каждой пары) - Step size для количества (
stepSizeизexchangeInfo) - Price precision (
tickSize)
Binance вернёт -1013 MIN_NOTIONAL если сумма ордера ниже минимального порога. Это нужно проверять до отправки, с понятным сообщением пользователю, а не системным кодом ошибки.
Уведомления через Telegram-бота
Сервер отправляет алерты через Telegram Bot API: сработал take-profit, заполнился ордер, резкое движение цены. На мобильном клиенте это отображается как Telegram-сообщение — не требует отдельного push-канала.
Для более срочных уведомлений (liquidation warning) — нативные push через APNs/FCM в дополнение к Telegram.
Процесс работы
Проектирование архитектуры: нативный клиент vs Mini App. Разработка серверного бота с командами управления стратегией. Интеграция с биржевыми WebSocket API. Безопасное хранение ключей. UI дашборда: баланс, открытые позиции, история сделок. Тестирование на testnet биржи (Binance Testnet, Bybit Testnet).
Ориентиры по срокам
Telegram Mini App с базовым мониторингом и ручными ордерами — 3–5 недель. Нативное мобильное приложение с автоматическими стратегиями и real-time WebSocket данными — 8–14 недель.







