Розробка криптобота
Крипто-бот — це не магія та не гарантований прибуток. Це автоматизована система виконання торговельної стратегії. Хороша стратегія + погла реалізація = гроші втрачені. Погла стратегія + хороша реалізація = гроші втрачені повільно. Розберемось як будується production-ready бот, який не втрачає кошти з технічних причин.
Архітектура бота
Будь-який бот складається з кількох незалежних шарів:
Data layer — отримання ринкових даних. REST для історичних, WebSocket для реалтайм. Нормалізація даних з різних бірж у єдиний формат.
Strategy layer — обчислення сигналів. Приймає свічі/стакан/дані, повертає: BUY / SELL / HOLD з обсягом.
Execution layer — розміщення ордерів. Отримує сигнал, розміщує через API біржі, відслідковує виконання.
Risk management layer — обмеження на рівні системи: maximum drawdown, maximum позиція, stop-loss портфеля.
Persistence layer — збереження стану, угод, P&L.
Підключення до біржі через CCXT
CCXT (CryptoCurrency eXchange Trading Library) — стандартна бібліотека для підключення до 100+ бірж з єдиним API. Python, JavaScript, PHP.
import ccxt
import asyncio
exchange = ccxt.binance({
'apiKey': API_KEY,
'secret': API_SECRET,
'options': {
'defaultType': 'spot', # spot / future / margin
},
'enableRateLimit': True, # вбудований rate limiter
})
async def fetch_ohlcv(symbol: str, timeframe: str, limit: int = 200):
ohlcv = await exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
return pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
CCXT обробляє rate limits, нормалізує формати відповідей, маппіт коди помилок. Для мультибіржевих стратегій — переключення біржі однією лінією.
Типи стратегій
Трендові стратегії
Слідують тренду: покупають при восходящому тренді, продають при низвідуючому. Приклади: EMA crossover, ADX + DI.
Mean-reversion стратегії
Припускають повернення ціни до середнього: продають при перекупленості, купують при перепроданості. RSI, Bollinger Bands. Працюють у боковику, втрачають на трендах.
Статистичний арбітраж
Пошук коінтегрованих пар (BTC/ETH історично рухаються разом). При розхідженні спреду — long відстаючого, short обгоняючого. Вимагає постійного моніторингу коінтеграції.
Risk Management
Важливіше самої стратегії. Без нього будь-яка стратегія зрештою обнулює депозит.
class RiskManager:
def __init__(self, config: RiskConfig):
self.max_position_pct = config.max_position_pct # % від депозиту
self.max_daily_loss_pct = config.max_daily_loss_pct
self.max_drawdown_pct = config.max_drawdown_pct
self.daily_pnl = 0
self.peak_balance = None
def calculate_position_size(self, balance: float, price: float, stop_price: float) -> float:
# Kelly criterion / fixed fractional
risk_per_trade = balance * (self.max_position_pct / 100)
price_risk = abs(price - stop_price) / price
if price_risk == 0:
return 0
position_value = risk_per_trade / price_risk
return min(position_value, balance * 0.3) # макс 30% в одній позиції
def check_circuit_breaker(self, current_balance: float) -> bool:
if self.peak_balance is None:
self.peak_balance = current_balance
drawdown = (self.peak_balance - current_balance) / self.peak_balance * 100
daily_loss = self.daily_pnl / self.peak_balance * 100
if drawdown > self.max_drawdown_pct:
return False # зупинити торгівлю
if daily_loss < -self.max_daily_loss_pct:
return False # зупинити торгівлю
return True
Backtesting
Бот без backtesting — це гемблінг. Backtrader (Python) або backtesting.py для простого старту, Vectorbt для швидкого векторизованого тестування.
Ключові метрики:
- Sharpe Ratio > 1.5 — прийнятний результат
- Max Drawdown — скільки бот міг втратити від піку
- Win Rate — % прибуткових угод (не головна метрика)
- Profit Factor = gross profit / gross loss (> 1.5 хорошо)
Попередження про overfitting: стратегія з 20+ параметрами, оптимізована на 2 років даних, імовірно переобладнана. Тестуй на out-of-sample даних.
Розгортання та моніторинг
Production бот повинен:
- Працювати 24/7 на VPS/облаці (мінімум 2 CPU, 4 GB RAM, SSD)
- Автоматично перезапускатися при падінні (systemd, Docker + restart policy)
- Логувати всі дії з часовою міткою
- Надсилати Telegram алерти при помилках або аномаліях
- Мати веб-дашборд з статусом, P&L, відкритими позиціями
| Компонент | Технологія |
|---|---|
| Мова | Python 3.11+ / TypeScript |
| API біржі | CCXT / прямий API |
| Індикатори | pandas-ta / ta-lib |
| Backtesting | backtesting.py / Vectorbt |
| База даних | PostgreSQL / InfluxDB (time-series) |
| Оркестрація | Docker + systemd |
| Моніторинг | Grafana + Prometheus |
Розробка бота під конкретну стратегію: 3–6 тижнів включаючи backtesting, інтеграцію з біржею та налаштування моніторингу.







