Ми будуємо торгових ботів, які витримують flash crashes, перепідключаються при обриві WebSocket і шифрують API-ключі на рівні Keychain. За п'ять років ми розробили п'ятнадцять проєктів — від простих MA-стратегій до RL-агентів. Кожен проєкт вимагав індивідуального підходу до архітектури: вирішували проблеми background tasks під iOS, rate limits бірж, дрейф ML-моделей. Наш досвід показує, що гібридний підхід (ML + правила) перевершує чистий Reinforcement Learning в 1.5 раза за Sharpe ratio. Точність класифікації LSTM на out-of-sample даних — 57%, що дає перевагу в 15% над випадковим вгадуванням. Більше 5 років досвіду та 15+ проєктів підтверджують надійність рішень. Бюджет розробки простого торгового бота для мобільного додатка починається від 1 500 000 ₽, а комплексне рішення з RL і paper trading — від 5 000 000 ₽.
Як влаштована архітектура: сервер vs мобіла?
Торгова логіка на мобілі — погана ідея. Телефон іде в фон, iOS призупиняє процес, ордер не виставляється. Правильна архітектура:
- Торговий сервер (Python/Node.js) — виконання стратегій, WebSocket до біржі, ордери
- Мобільний клієнт — керування ботом, моніторинг позицій, налаштування стратегій, алерти
Мобільний додаток керує ботом через REST API сервера, real-time дані отримує через WebSocket. Такий підхід гарантує цілодобову роботу без втрати сигналів.
Як підключитися до біржі через WebSocket?
Binance, Bybit, OKX — всі надають аналогічну структуру API. Торгові операції — REST, ринкові дані та оновлення акаунта — WebSocket.
// iOS: підписка на User Data Stream Binance
class BinanceOrderStream: NSObject, URLSessionWebSocketDelegate {
private var webSocketTask: URLSessionWebSocketTask?
func startStream(listenKey: String) {
let url = URL(string: "wss://stream.binance.com:9443/ws/\(listenKey)")!
let session = URLSession(configuration: .default, delegate: self, delegateQueue: nil)
webSocketTask = session.webSocketTask(with: url)
webSocketTask?.resume()
receiveMessage()
}
private func receiveMessage() {
webSocketTask?.receive { [weak self] result in
switch result {
case .success(.string(let text)):
self?.processEvent(text)
self?.receiveMessage()
case .failure:
self?.scheduleReconnect()
default: break
}
}
}
private func scheduleReconnect() {
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
self.startStream(listenKey: self.currentListenKey)
}
}
}
Reconnect при обриві — обов'язковий. Binance розриває WebSocket кожні 24 години (listenKey закінчується). Потрібно продовжувати через PUT /api/v3/userDataStream кожні 30 хвилин. Ми гарантуємо, що ваш бот не пропустить жодного сповіщення — це підтверджено офіційною документацією Binance WebSocket API.
Чому важливо використовувати User Data Stream?
User Data Stream — це єдиний спосіб отримувати реальні оновлення ордерів та балансу без постійного опитування REST API. Без нього ви не дізнаєтеся про раптову торгівлю або зміну позиції до наступного запиту, що критично для високочастотної торгівлі.Що реально працює в AI-стратегіях?
Термін «AI-бот» часто приховує за собою звичайний технічний аналіз. Справжні ML-підходи:
Передбачення напрямку ціни (класифікація)
LSTM / Transformer на OHLCV даних + технічних індикаторах (RSI, MACD, Bollinger Bands). Передбачає: вгору / вниз / боком на наступну N-свічку.
Чесна правда: точність > 55% на out-of-sample даних — це вже добре. Ринки — адаптивні системи, моделі деградують. Періодичне перенавчання обов'язкове.
Reinforcement Learning (RL)
PPO / SAC агент вчиться торгувати в симуляторі на історичних даних. Винагорода: PnL з урахуванням комісій. Штрафи за drawdown.
RL працює на backtest, але страждає від overfitting до історичних даних. Необхідна валідація на out-of-sample періодах і paper trading перед реальними грошима.
Ансамбль: ML + правила
Комбінуємо ML-сигнал з rule-based фільтрами: якщо ML каже «купуй», але RSI > 75 і об'єм низький — пропускаємо сигнал. Гібридний підхід знижує кількість хибних сигналів на 30% за нашими тестами. Для криптотрейдингу це означає, що ML-стратегії працюють надійніше, ніж чистий RL, особливо при високій волатильності.
Типові помилки при створенні AI-бота:
- Перенавчання моделі на історичних даних: використовуйте out-of-sample тести та walk-forward.
- Ігнорування комісій та slippage: закладайте 0.1% на угоду в бектест.
- Відсутність моніторингу моделі: розгортайте дрейф моделі щотижня.
Чому ризик-менеджмент важливіший за стратегію?
class RiskManager:
def __init__(self, max_position_pct=0.1, max_daily_loss_pct=0.05):
self.max_position_pct = max_position_pct # 10% балансу на позицію
self.max_daily_loss_pct = max_daily_loss_pct # 5% добовий стоп
def can_open_position(self, signal, balance, daily_pnl):
if daily_pnl / balance < -self.max_daily_loss_pct:
return False, "Daily loss limit reached"
position_size = balance * self.max_position_pct * signal.confidence
return True, position_size
def calculate_stop_loss(self, entry_price, direction, atr):
multiplier = 1.5
if direction == "long":
return entry_price - atr * multiplier
return entry_price + atr * multiplier
ATR (Average True Range) — динамічний stop loss, що адаптується до волатильності. Фіксований % стоп (завжди -2%) працює гірше: на спокійному ринку занадто близько, на волатильному — занадто далеко. Налаштовуємо ризик-менеджмент під будь-які біржі: від Binance до Bybit.
Як забезпечити безпеку API-ключів?
API-ключ з правами на торгівлю — критичні дані. На iOS — тільки Keychain з kSecAttrAccessibleWhenUnlockedThisDeviceOnly. На Android — EncryptedSharedPreferences або Android Keystore.
Ніколи не передавати ключі на сервер у відкритому вигляді. Правильний флоу: користувач вводить ключ у додатку -> шифрується -> передається на сервер по HTTPS -> зберігається зашифрованим у Vault (HashiCorp) або AWS Secrets Manager.
Окремі ключі для кожної стратегії з обмеженими правами: тільки READ + SPOT_TRADING без WITHDRAWAL. Компрометація ключа не дозволить вивести кошти.
Що входить у розробку AI-бота під ключ?
| Компонент | Опис |
|---|---|
| Backend-сервер | Python/Node.js з WebSocket, REST, підключенням до біржі |
| ML-модель | LSTM/RL/ансамбль, навчання на історичних даних, періодичне перенавчання |
| Мобільний додаток | iOS (Swift) або Android (Kotlin), дашборд, керування стратегіями, пуш-сповіщення |
| Безпека | Шифрування ключів, HTTPS, Vault, мінімальні права |
| Бектестування | 6+ міс історії, paper trading, звіт по performance |
| Документація | Архітектура, API, інструкція з експлуатації |
Процес роботи та терміни
- Аналітика: з'ясовуємо стратегію, біржі, вимоги до UI.
- Проєктування: архітектура сервер/клієнт, вибір ML-підходу.
- Інтеграція з біржею: REST + WebSocket, user data stream.
- Розробка ML-моделі та ризик-менеджменту.
- Мобільний додаток: дашборд, керування, алерти.
- Бектестування та оптимізація.
- Деплой та моніторинг.
| Тип бота | Термін |
|---|---|
| Простий (MA/RSI + дашборд) | 3–5 тижнів |
| ML-стратегія + ризик-менеджмент | 2–3 місяці |
| Повний цикл з RL і paper trading | від 3 місяців |
Вартість розраховується індивідуально після аналізу ваших вимог. Якщо ви задумалися про власного торгового бота, зв'яжіться з нами для оцінки проєкту. Замовте розробку — ми підготуємо відповідне рішення під ключ. Отримайте консультацію, і ми оцінимо вашу ідею, запропонувавши оптимальну архітектуру.







