Разработка бота на базе RSI

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка бота на базе RSI
Простая
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1060
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка бота на базе RSI

RSI (Relative Strength Index) — осциллятор перекупленности/перепроданности, разработанный Уэллсом Уайлдером в 1978 году. До сих пор один из самых используемых индикаторов. Бот на базе RSI прост в реализации, но требует аккуратной настройки: в трендовых условиях RSI даёт множество ложных сигналов.

Как работает RSI

RSI измеряет скорость и изменение ценовых движений. Формула:

RSI = 100 - (100 / (1 + RS))
RS = Average Gain / Average Loss (за N периодов, стандарт: 14)

Значения: 0–100. Традиционные уровни:

  • Выше 70 — перекупленность (сигнал к продаже в контртрендовой стратегии)
  • Ниже 30 — перепроданность (сигнал к покупке)

Реализация бота

import ccxt
import pandas_ta as ta
import asyncio

class RSIBot:
    def __init__(self, symbol: str, rsi_period: int = 14,
                 oversold: float = 30, overbought: float = 70):
        self.exchange = ccxt.binance({'apiKey': API_KEY, 'secret': SECRET})
        self.symbol = symbol
        self.rsi_period = rsi_period
        self.oversold = oversold
        self.overbought = overbought
    
    async def get_signal(self) -> str:
        ohlcv = await self.exchange.fetch_ohlcv(self.symbol, '1h', limit=100)
        df = pd.DataFrame(ohlcv, columns=['ts', 'open', 'high', 'low', 'close', 'vol'])
        df['rsi'] = ta.rsi(df['close'], length=self.rsi_period)
        
        current_rsi = df['rsi'].iloc[-1]
        if current_rsi < self.oversold:
            return 'BUY'
        elif current_rsi > self.overbought:
            return 'SELL'
        return 'HOLD'

Настройка под рыночные условия

Стандартные уровни 30/70 работают в боковике. На сильном тренде RSI может удерживаться выше 70 часами — бот будет продавать против тренда и терять. Решения:

  • Повышать пороги на бычьем рынке: 40/80 вместо 30/70
  • Фильтр тренда: торговать RSI только если 200 EMA подтверждает направление
  • Дивергенция RSI: цена делает новый максимум, RSI — нет. Это более надёжный сигнал разворота чем просто уровень 70

Срок разработки: 1–2 недели включая backtesting на исторических данных и настройку параметров.