Как создать торгового бота для Bybit на Python с нуля

  1. Home
  2. /
  3. Блог
  4. /
  5. Программа амбассадоров
  6. /
  7. Как создать торгового бота...

Разработка торгового бота на основе полос Боллинджера для Bybit

Торговый бот на Bollinger Bands и его влияние на алгоритмические крипто-стратегии на Python
Bollinger Bands Bot Официальный логотип

Эта статья — подробный гайд по созданию криптовалютного торгового бота на Python для биржи Bybit. Бот использует полосы Боллинджера как основную стратегию, дополненную другими индикаторами для повышения точности сигналов. Включены модули для бэктестинга и реальной торговли.


Обзор стратегии: Полосы Боллинджера

Полосы Боллинджера — это инструмент технического анализа, основанный на скользящей средней и стандартном отклонении:

  • Средняя линия: простая скользящая средняя (SMA), обычно за 20 периодов
  • Верхняя полоса: SMA + 2 × стандартное отклонение
  • Нижняя полоса: SMA − 2 × стандартное отклонение

Логика торговли:

  • Покупка при касании нижней полосы
  • Продажа при касании верхней полосы

Однако использование только полос Боллинджера даёт слабые результаты, поэтому добавлены дополнительные индикаторы.

📌 Дополнительные индикаторы

  • RSI — индекс относительной силы (перекупленность >70, перепроданность <30)
  • EMA — экспоненциальная скользящая средняя (направление тренда)
  • ATR — средний истинный диапазон (волатильность, адаптивный стоп-лосс)
  • CSI / CSC — авторские индикаторы на основе кластеров свечей и плотности сигналов

🛠️ Инструменты и библиотеки

  • requests, pybit — доступ к API
  • pandas, numpy — обработка данных и расчёт индикаторов
  • datetime, time — управление временем
  • threading — многопоточность
  • telebot — уведомления в Telegram (опционально)

📁 Структура проекта

bollinger_bot/
├── main.py       # Логика реальной торговли
├── back.py       # Бэктестинг
├── config.cfg    # Конфигурация (опционально)

⚙️ Конфигурация

symbol = "ETHUSDT"
interval = "5m"
bb_period = 40
bb_std = 1
STOP_LOSS_PCT = 0.004

config = {
    'min_cluster': 3,
    'bull_quant': 0.75,
    'bear_quant': 0.25,
    'rsi': 60
}

📈 Получение исторических данных

def fetch_klines_paged(symbol, interval, total_bars, client):
    ...
    return df

Функция обходит лимиты API, собирая полные данные по свечам.


📊 Расчёт индикаторов

  • RSI — сглаженный период 450
  • Bollinger Bands — SMA и стандартное отклонение
  • CSI — оценка силы движения цены
  • CSC — подтверждение кластерных сигналов

📌 Логика сигналов

def check_signal_row(row, prev_row):
    ...
    return 'buy' or 'sell' or None

Условия:

  • Пересечение полос Боллинджера
  • Импульс CSI
  • Порог RSI
  • Кластерное подтверждение

🧪 Бэктестинг

if __name__ == '__main__':
    ...
    trades_df.to_csv('trades_complete.csv', sep=';', index=False)

Сделки закрываются по стоп-лоссу или по времени. Скрипт выводит прибыль/убыток и историю сделок.


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

Функционал:

  • Проверка закрытых свечей
  • Перерасчёт индикаторов
  • Обнаружение сигналов
  • Управление позициями через API Bybit
  • Уведомления в Telegram

🔑 Ключевые функции

  • get_last_closed_candle() — только закрытые свечи
  • compute_csc(df) — кластерный анализ по последним свечам
  • place_order() — рыночные ордера со стоп-лоссом
  • close_position() — закрытие позиции
  • can_enter_again() — защита от повторного входа
  • while True: ... time.sleep(3) — основной цикл, проверка каждые 5 минут

Результаты

Бэктест на 100,000 свечей (5 минут) дал 173.86% прибыли за год. С плечом 10× — это 1738% доходности. После учёта комиссий Bybit (0.1%) и проскальзывания (~0.02%) прибыль остаётся значительной.

Текстовый файл с кодом доступный по ссылке.


Заключение

Этот бот — надёжный фреймворк для алгоритмической торговли с использованием полос Боллинджера и дополнительных индикаторов. Он включает историческое тестирование и живую торговлю с реальными данными и уведомлениями. Несмотря на успешные бэктесты, живая торговля требует мониторинга, управления рисками и учёта рыночных условий.

Repost
Yum
[rapidtextai_chatbot id="1"]