Разработка AI-системы генерации торговых сигналов
Торговый сигнал — рекомендация на покупку или продажу конкретного инструмента с указанием параметров входа и управления позицией. AI-система генерирует сигналы систематически, устраняя субъективность.
Архитектура системы генерации сигналов
Multi-model ensemble
Один алгоритм не работает во всех режимах. Ансамбль:
- Trend model: работает в трендовых рынках
- Mean-reversion model: работает в боковых
- Fundamental model: долгосрочные сигналы
- Sentiment model: краткосрочные news/social signals
Meta-model (stacking) определяет веса: текущий рыночный режим → weights distribution между моделями.
Временные горизонты
| Горизонт | Тип сигнала | Модель | Данные |
|---|---|---|---|
| Интрадей (минуты–часы) | Technical | LSTM, CNN | Tick, 1m, 5m OHLCV |
| Свинг (дни–недели) | Technical+Fundamental | XGBoost ensemble | Daily OHLCV + финансы |
| Позиционный (месяцы) | Fundamental | Factor model + ML | Quarterly financials + macro |
Signal normalization
Сигналы из разных моделей в разных масштабах → нормализация в [-1, +1] или [-2, +2] scale. Z-score нормализация с rolling window vs. percentile ranking.
Feature Pipeline
Технические признаки
import pandas_ta as ta
def compute_technical_features(df):
features = pd.DataFrame(index=df.index)
# Momentum
features['rsi_14'] = ta.rsi(df['close'], 14)
features['rsi_7'] = ta.rsi(df['close'], 7)
features['stoch_k'] = ta.stoch(df['high'], df['low'], df['close'])['STOCHk_14_3_3']
# Trend
macd = ta.macd(df['close'])
features['macd_hist'] = macd['MACDh_12_26_9']
features['ema_cross'] = ta.ema(df['close'], 20) / ta.ema(df['close'], 50) - 1
# Volatility
features['atr_14'] = ta.atr(df['high'], df['low'], df['close'], 14)
bb = ta.bbands(df['close'], 20, 2.0)
features['bb_position'] = (df['close'] - bb['BBL_20_2.0']) / (bb['BBU_20_2.0'] - bb['BBL_20_2.0'])
# Volume
features['obv_momentum'] = ta.obv(df['close'], df['volume']).pct_change(10)
features['vwap_deviation'] = df['close'] / ta.vwap(df['high'], df['low'], df['close'], df['volume']) - 1
return features
Macro-features
Кросс-активные признаки: VIX, dollar index (DXY), yield curve, commodities/equity ratio. Correlation с benchmark. Seasonal dummies.
Signal Delivery и формат
Структурированный сигнал
{
"signal_id": "uuid4",
"timestamp": "2025-03-28T14:30:00Z",
"symbol": "BTC/USDT",
"direction": "long",
"confidence": 0.78,
"entry": {
"type": "limit",
"price": 65200,
"valid_until": "2025-03-28T16:00:00Z"
},
"stop_loss": 63800,
"take_profit": [67000, 69500],
"timeframe": "4h",
"strategy": "trend_following",
"explanation": {
"primary_factors": ["RSI bullish divergence", "MACD crossover", "Volume confirmation"],
"risk_reward": 2.3,
"model_signals": {"trend": 0.82, "mean_rev": 0.55, "sentiment": 0.71}
}
}
Delivery channels: Telegram bot, Discord webhook, REST API, email, TradingView webhook.
Performance Tracking
Каждый сигнал трекается от генерации до закрытия:
- Entry slippage (сколько отклонилось от рекомендованной цены)
- Outcome (hit TP / hit SL / expired)
- Actual R:R vs. planned
- Attribution по стратегиям и временным горизонтам
A/B тестирование моделей: 50% сигналов из model A, 50% из model B → сравнение performance через 90 дней. Статистически значимое превосходство → переключение.
Срок разработки: 2–3 месяца для базовой системы с 3–5 моделями, Telegram delivery, tracking dashboard.







