Розробка бота на базі Bollinger Bands

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка бота на базі Bollinger Bands
Простий
~3-5 днів
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

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

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

Розробка бота на базі Bollinger Bands

Bollinger Bands — індикатор волатильності, розроблений Джоном Боллінджером. Три лінії: середня (SMA 20) та два канали на відстані N стандартних відхилень (зазвичай 2). На 95% часу ціна знаходиться всередині каналів. Вихід за канал — статистично значима подія.

Логіка стратегії

Mean-reversion підхід: ціна виходить нижче нижної смуги → перепроданість → купуємо в розрахунку на повернення до середньої.

Breakout підхід: ціна пробиває верхню смугу з високим об'ємом → продовження тренду → купуємо.

Важливо не змішувати ці два підходи в одному боті без фільтра рыночного режиму.

Реалізація

import pandas_ta as ta
import ccxt

class BollingerBandsBot:
    def __init__(self, symbol: str, period: int = 20, std_dev: float = 2.0):
        self.exchange = ccxt.bybit({'apiKey': API_KEY, 'secret': SECRET})
        self.symbol = symbol
        self.period = period
        self.std_dev = std_dev
    
    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'])
        
        # Обчислюємо Bollinger Bands
        bb = ta.bbands(df['close'], length=self.period, std=self.std_dev)
        
        lower = bb[f'BBL_{self.period}_{self.std_dev}'].iloc[-1]
        mid   = bb[f'BBM_{self.period}_{self.std_dev}'].iloc[-1]
        upper = bb[f'BBU_{self.period}_{self.std_dev}'].iloc[-1]
        price = df['close'].iloc[-1]
        
        # Bandwidth — ширина канала, нормована до середньої
        bandwidth = (upper - lower) / mid
        
        # Mean-reversion тільки при низькій волатильності (stisnutte)
        if bandwidth < 0.04:  # канал звужен — готуємося до пробою
            return 'WATCH'
        
        if price < lower:
            return 'BUY'   # нижче нижної смуги
        elif price > upper:
            return 'SELL'  # вище верхної смуги
        
        # Повернення до середнього — вихід з позиції
        if abs(price - mid) / mid < 0.002:  # ціна у середньої
            return 'CLOSE'
        
        return 'HOLD'

%B та Bandwidth

%B показує де ціна знаходиться всередину каналу (0 = нижня смуга, 1 = верхня):

percent_b = (price - lower) / (upper - lower)
# < 0: нижче нижної (перепроданість)
# > 1: вище верхної (перекупленість)
# 0.5: у середньої лінії

Bandwidth (ширина каналу) — індикатор волатильності. "Bollinger Squeeze" — сильне звуження часто передує різкому рухові. Сигнал напрямку — від першого пробою після сжаття.

Бот на Bollinger Bands з mean-reversion логікою та bandwidth фільтром розробляється за 1–2 тижні.