Разработка AI-модели анализа технических индикаторов RSI MACD Bollinger

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка AI-модели анализа технических индикаторов RSI MACD Bollinger
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Разработка AI-модели анализа технических индикаторов RSI MACD Bollinger

Технический анализ существует дольше, чем современные нейросети. RSI, MACD, Bollinger Bands — эмпирически найденные инструменты, которые описывают рыночную динамику. ML-подход не заменяет эти индикаторы, а автоматически обучается на них: находит оптимальные параметры, комбинации и контекст применения.

RSI: предсказание возврата к среднему

Стандартный RSI(14):

RSI = 100 - 100 / (1 + RS)
RS = Average Gain / Average Loss over 14 periods

Традиционное правило: RSI < 30 → перепроданность → сигнал покупки. Проблема: работает плохо в трендовых рынках (RSI может оставаться ниже 30 неделями в downtrend).

ML-улучшение:

  • Оптимизация периода (7-28) через Optuna для каждого инструмента
  • RSI в контексте тренда: rsi_divergence_from_trend = rsi - trend_adjusted_rsi
  • Multi-timeframe RSI: 7d, 14d, 21d как отдельные фичи
  • RSI velocity: изменение RSI за 3 дня (acceleration сигнал)

MACD: momentum и cross-сигналы

Стандартный MACD:

MACD Line = EMA(12) - EMA(26)
Signal Line = EMA(9) of MACD Line
Histogram = MACD - Signal

ML-Features из MACD:

  • macd_histogram: значение и знак
  • macd_histogram_trend: растёт или падает (momentum momentum)
  • macd_signal_cross: 1 при bullish cross (MACD пересёк Signal снизу)
  • macd_zero_cross: пересечение нулевой линии
  • macd_divergence: новый low цены, но higher MACD — bullish divergence

Параметрическая оптимизация: Стандарт (12, 26, 9) — не обязательно оптимален для конкретного инструмента/таймфрейма. Bayesian оптимизация пространства (fast_period, slow_period, signal_period) по Sharpe ratio на walkforward validation.

Bollinger Bands: volatility и breakouts

Стандартные Bollinger Bands(20, 2):

Middle Band = SMA(20)
Upper Band = SMA(20) + 2 × σ(20)
Lower Band = SMA(20) - 2 × σ(20)

ML-Features:

  • %b = (Price - Lower) / (Upper - Lower): позиция цены в полосе (0-1)
  • bandwidth = (Upper - Lower) / Middle: ширина полосы, proxy для волатильности
  • squeeze: bandwidth < 6-месячного minimum → предстоит breakout
  • band_walk: цена несколько дней подряд касается верхней/нижней полосы → трендовый рынок

Bollinger Squeeze стратегия: Squeeze (сжатие) предшествует значимому движению. Direction uncertain, but magnitude expected. ML предсказывает направление breakout из squeeze.

Комбинированная ML-модель

Объединение всех индикаторов в единую модель:

Feature matrix:

def build_technical_features(df):
    features = {}

    # RSI family
    for period in [7, 14, 21]:
        features[f'rsi_{period}'] = talib.RSI(df.close, period)
    features['rsi_divergence'] = compute_rsi_divergence(df)

    # MACD family
    macd, signal, hist = talib.MACD(df.close, 12, 26, 9)
    features['macd_hist'] = hist
    features['macd_hist_trend'] = hist.diff(3)
    features['macd_cross'] = (macd > signal).astype(int)

    # Bollinger
    upper, middle, lower = talib.BBANDS(df.close, 20, 2, 2)
    features['bb_pct_b'] = (df.close - lower) / (upper - lower)
    features['bb_bandwidth'] = (upper - lower) / middle
    features['bb_squeeze'] = (features['bb_bandwidth'] < features['bb_bandwidth'].rolling(126).min() * 1.1)

    # Stochastic
    slowk, slowd = talib.STOCH(df.high, df.low, df.close)
    features['stoch_k'] = slowk
    features['stoch_cross'] = (slowk > slowd).astype(int)

    return pd.DataFrame(features)

Модель: LightGBM с квантильными потерями. Таргет: forward 5-day return. Feature importance выявит, какие индикаторы действительно предсказательны.

Контекст-зависимость индикаторов

Ключевой insight: индикаторы работают по-разному в разных рыночных режимах:

  • В trending market: RSI < 30 = продолжение падения (не разворот!)
  • В ranging market: RSI < 30 = реальный сигнал разворота
  • При высокой волатильности: Bollinger Bands нужно расширять (3σ вместо 2σ)

Regime-conditional модель:

# Детектор режима
regime = classify_market_regime(df)  # 'trending', 'ranging', 'volatile'

# Разные модели для разных режимов
if regime == 'trending':
    signal = momentum_model.predict(features)
elif regime == 'ranging':
    signal = mean_reversion_model.predict(features)

Backtesting технического подхода

Простая стратегия для валидации модели:

  1. Когда signal > threshold: long позиция N лотов
  2. Когда signal < -threshold: short
  3. Stop: -2 × ATR(14)
  4. Target: +4 × ATR(14)

Расчёт реальных TC:

  • Commission: 0.04% per side (interactive brokers)
  • Slippage: 0.02-0.05%
  • Financing: overnight swap для forex/CFD

Оценка: Sharpe > 1.0 на out-of-sample после TC — достаточный результат для дальнейшей разработки.

Сроки: baseline модель с RSI+MACD+Bollinger features — 2-3 недели. Полноценная система с regime detection, параметрической оптимизацией и backtesting — 6-8 недель.