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

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розробка AI-моделі аналізу технічних індикаторів RSI MACD Bollinger
Середній
~2-3 дні
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

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

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

RSI: Прогнозування повернення до середнього

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

RSI = 100 - 100 / (1 + RS)
RS = Середній прибуток / Середня втрата за 14 періодів

Традиційне правило: RSI < 30 → перепроданість → сигнал до покупки. Проблема: працює погано на трендових ринках (RSI може залишатися нижче 30 протягом тижнів у даунтренді).

ML-поліпшення:

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

MACD: Момент та сигнали перетину

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

Лінія MACD = EMA(12) - EMA(26)
Сигнальна лінія = EMA(9) MACD лінії
Гістограма = MACD - сигнал

ML-ознаки з MACD:

  • macd_histogram: значення та знак
  • macd_histogram_trend: зростає або падає (момент моменту)
  • macd_signal_cross: 1 при бичачому перетині (MACD перетнув сигнал знизу)
  • macd_zero_cross: перетин нульової лінії
  • macd_divergence: новий мінімум ціни, але вищий MACD — бичача дивергенція

Параметрична оптимізація: Стандарт (12, 26, 9) — не обов'язково оптимальний для конкретного інструменту/часового фрейму. Байєсова оптимізація простору (fast_period, slow_period, signal_period) за коефіцієнтом Шарпа на прямій валідації.

Bollinger Bands: волатильність та пробої

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

Середня смуга = SMA(20)
Верхня смуга = SMA(20) + 2 × σ(20)
Нижня смуга = SMA(20) - 2 × σ(20)

ML-ознаки:

  • %b = (ціна - нижня) / (верхня - нижня): позиція ціни в смузі (0-1)
  • bandwidth = (верхня - нижня) / середня: ширина смуги, проксі волатильності
  • squeeze: bandwidth < 6-місячний мінімум → приходить пробій
  • band_walk: ціна кілька днів підряд дотикається верхньої/нижньої смуги → трендовий ринок

Стратегія Bollinger Squeeze: Стиснення передує значному рухові. Напрямок невизначений, але величина очікується. ML передбачає напрямок пробою зі стиснення.

Комбінована ML-модель

Інтеграція всіх індикаторів в єдину модель:

Матриця ознак:

def build_technical_features(df):
    features = {}

    # Родина RSI
    for period in [7, 14, 21]:
        features[f'rsi_{period}'] = talib.RSI(df.close, period)
    features['rsi_divergence'] = compute_rsi_divergence(df)

    # Родина MACD
    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)

    # Стохастичний
    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 з квантильними втратами. Ціль: вперед 5-денний повернення. Важливість ознаки виявить, які індикатори дійсно прогнозуючі.

Залежність від контексту індикаторів

Ключове прозріння: індикатори працюють по-різному в різних режимах ринку:

  • На трендовому ринку: RSI < 30 = продовження спаду (не розворот!)
  • На варіюючому ринку: RSI < 30 = справжній сигнал розвороту
  • Висока волатильність: Bollinger Bands потребує розширення (3σ замість 2σ)

Модель, залежна від режиму:

# Детектор режиму
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: довга позиція N лотів
  2. Коли signal < -threshold: коротка позиція
  3. Stop: -2 × ATR(14)
  4. Мета: +4 × ATR(14)

Розрахунок реальних витрат на транзакцію:

  • Комісія: 0.04% за сторону (Interactive Brokers)
  • Проковзування: 0.02-0.05%
  • Фінансування: ночевий своп для forex/CFD

Оцінка: Sharpe > 1.0 на поза вибіркою після TC — достатній результат для подальшого розвитку.

Часова шкала: базова модель з ознаками RSI+MACD+Bollinger — 2-3 тижні. Повна система з виявленням режиму, параметричною оптимізацією та backtesting — 6-8 тижнів.