Войти
Главная / Data science в трейдинге / Как на Python написать свой паттерн и торговать с ним на Bybit
Хотите зарабатывать на трейдинге?

Подписывайтесь на наш телеграм-канал для трейдеров — с глубокой аналитикой и рабочими стратегиями

Подписаться

Как собрать свой журнал для тестирования стратегии? Заберите бесплатный гайд

Гайд от нашей команды поможет вам систематизировать торговлю и принимать взвешенные решения

Подтвердите согласие

Как на Python написать свой паттерн и торговать с ним на Bybit

Привет, на связи Григорий, CTO Trade2Good. Алгоритмическая торговля — это не просто автоматизация кнопок «купить» и «продать» на бирже. В её основе лежит чёткая логика входа и выхода из позиции. Не простые шаблоны из сети, а именно та система, которую вы разрабатываете сами, с учетом своих наблюдений и понимания рынка.

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

Почему стоит разрабатывать собственные паттерны

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

Разработка собственной логики даёт ряд существенных преимуществ:

  • Гибкость. Вы можете адаптировать стратегию под конкретный инструмент или рыночные условия.
  • Снижение рыночного шума. Меньше ложных входов, особенно в период высокой неопределённости.
  • Контроль над рисками. Вы сами задаёте, когда входить и выходить, какие фильтры использовать.
  • Готовность к автоматизации. Собственный паттерн можно напрямую связать с API биржи и создать торгового бота.

Описание паттерна: пробой и закрепление за пределами полос Боллинджера

Идея довольно простая и основана на принципе импульсной торговли. Мы предполагаем, что если цена выходит за пределы полос Боллинджера и удерживается там, это может свидетельствовать о продолжении текущего движения.

Правила следующие:

  • Сигнал на покупку: если две свечи подряд закрываются выше верхней полосы Боллинджера.
  • Сигнал на продажу: если две свечи подряд закрываются ниже нижней полосы.

Такой подход помогает избежать преждевременных входов, когда цена лишь «проколола» границу, но быстро вернулась обратно.

Подготовка данных

1. Импорт необходимых библиотек

Для начала импортируем всё, что понадобится:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from ta.volatility import BollingerBands
import plotly.graph_objects as go

2. Загрузка и предобработка исторических данных

Мы будем использовать исторические свечные данные по BTC. Их можно, например, экспортировать с Bybit или другой платформы и сохранить в виде файла btc_data.csv.

# Загрузка данных
df = pd.read_csv("btc_data.csv")

# Преобразование временной метки в формат datetime
df['Open time'] = pd.to_datetime(df['Open time'])

# Установка времени в качестве индекса
df.set_index('Open time', inplace=True)

# Оставляем только нужные столбцы
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]

# Убедимся, что данные отсортированы по времени
df = df.sort_index()

3. Расчет полос Боллинджера

Теперь добавим индикатор, который будет основой нашего паттерна.

# Расчет полос Боллинджера
bb = BollingerBands(close=df['Close'], window=20, window_dev=2)
df['bb_upper'] = bb.bollinger_hband()
df['bb_lower'] = bb.bollinger_lband()

Реализация паттерна «пробой и закрепление»

# Сигнал на покупку: две свечи подряд выше верхней полосы
df['buy_signal'] = (
    (df['Close'].shift(1) > df['bb_upper'].shift(1)) &
    (df['Close'] > df['bb_upper'])
)

# Сигнал на продажу: две свечи подряд ниже нижней полосы
df['sell_signal'] = (
    (df['Close'].shift(1) < df['bb_lower'].shift(1)) &
    (df['Close'] < df['bb_lower'])
)

Визуализация сигналов

import plotly.graph_objects as go

Создаем основной график цены с полосами Боллинджера

fig = go.Figure()

Линия закрытия

fig.add_trace(go.Scatter(x=df.index, y=df['Close'], mode='lines', name='Цена BTC', line=dict(color='black')))

Верхняя и нижняя полосы Боллинджера

fig.add_trace(go.Scatter(x=df.index, y=df['bb_upper'], mode='lines', name='Верхняя полоса Боллинджера', line=dict(dash='dot')))<br>fig.add_trace(go.Scatter(x=df.index, y=df['bb_lower'], mode='lines', name='Нижняя полоса Боллинджера', line=dict(dash='dot')))

Сигналы на покупку

fig.add_trace(go.Scatter(<br>x=df[df['buy_signal']].index,<br>y=df[df['buy_signal']]['Close'],<br>mode='markers',<br>name='Сигнал на покупку',<br>marker=dict(symbol='triangle-up', size=10, color='green')<br>))

Сигналы на продажу

fig.add_trace(go.Scatter(<br>x=df[df['sell_signal']].index,<br>y=df[df['sell_signal']]['Close'],<br>mode='markers',<br>name='Сигнал на продажу',<br>marker=dict(symbol='triangle-down', size=10, color='red')<br>))

Настройка графика

fig.update_layout(<br>title='Сигналы паттерна: Пробой и закрепление за полосами Боллинджера',<br>xaxis_title='Дата',<br>yaxis_title='Цена BTC',<br>legend=dict(x=0, y=1),<br>template='plotly_white',<br>hovermode='x unified'<br>)
fig.show()

Как применять на практике

  • Бэктестинг: можно проверить, как сигналы работали на исторических данных.
  • Автоматизация: библиотека pybit позволяет взаимодействовать с API Bybit — можно подключить сигналы к торговому роботу.
  • Фильтрация: сигналы можно усиливать с помощью объёма или других индикаторов.

Как использовать паттерн для торговли на Bybit с помощью Python

После того как вы реализовали и протестировали собственный паттерн (например, «пробой и закрепление за пределами полос Боллинджера»), следующим логичным шагом будет его интеграция в процесс реальной торговли. В данном случае — на бирже Bybit, через их официальное API.

Что потребуется:

  1. API-ключи от Bybit.Получить их можно в личном кабинете пользователя на официальном сайте: https://www.bybit.com
  2. Библиотека pybit. Это официальный Python SDK от Bybit, позволяющий работать с их API.
  3. Готовая логика сигналов. Вы уже написали код, который определяет сигналы на вход в позицию. Осталось связать эти сигналы с API-запросами к бирже.

1. Установка pybit

pip install pybit

2. Подключение к API Bybit

from pybit.unified_trading import HTTP

# Подключение к API
session = HTTP(
    api_key='ВАШ_API_КЛЮЧ',
    api_secret='ВАШ_SECRET',
    testnet=True  # True = тестовая среда (не бойтесь тестировать!)
)

⚠️ Важно: обязательно тестируйте на testnet перед переходом к реальным деньгам.

3. Пример функции для отправки ордера

def open_order(symbol: str, side: str, qty: float, price: float = None, order_type: str = "Market"):
    """Отправляет рыночный или лимитный ордер на покупку или продажу"""
    try:
        response = session.place_order(
            category="linear",  # Для USDT perpetual контрактов
            symbol=symbol,
            side=side,  # 'Buy' или 'Sell'
            order_type=order_type,
            qty=qty,
            price=price if order_type == "Limit" else None,
            time_in_force="GoodTillCancel"
        )
        print(f"{side} ордер отправлен: {response}")
    except Exception as e:
        print(f"Ошибка при отправке ордера: {e}")

4. Связь паттерна с отправкой ордера

Добавим автоматическую торговлю при появлении сигнала.

latest_row = df.iloc[-1]

# Пример: покупаем 0.01 BTC, если есть сигнал
if latest_row['buy_signal']:
    open_order(symbol='BTCUSDT', side='Buy', qty=0.01)

elif latest_row['sell_signal']:
    open_order(symbol='BTCUSDT', side='Sell', qty=0.01)

Результат

Теперь у вас есть:

  • Свой собственный паттерн, определяемый программно.
  • Интерактивная визуализация через Plotly.
  • Полностью работающая интеграция с Bybit, которая может открывать сделки по сигналу.

Риски и рекомендации

  • Никогда не торгуйте сразу на реальные деньги — сначала используйте testnet.
  • Обязательно добавьте ограничения: количество открытых позиций, stop-losstake-profit, логгирование.
  • Паттерн необходимо бэктестить и оптимизировать — это всего лишь пример логики.

Заключение

Полный исходный код паттерна и примера интеграции с Bybit доступен в репозитории на GitHub. Если материал оказался полезным, вы можете поддержать проект — поставьте звездочку на репозитория или подпишитесь на обновления.


Создание собственного паттерна — это первый шаг к построению системного подхода в трейдинге. Такой подход позволяет разрабатывать адаптивные стратегии, которые можно проверять, улучшать и масштабировать.

Паттерн, реализованный в этом примере, — всего лишь один из множества возможных. Его цель — показать базовый принцип: вы можете формализовать собственное рыночное наблюдение и превратить его в автоматическую торговую логику.

Продолжайте тестировать идеи, анализировать поведение рынка и развивать свою торговую систему. Именно такой путь даёт наилучшие шансы на устойчивые результаты.

Хотите разбираться в рынках и зарабатывать на них при любых условиях?

Подписывайтесь на наш Telegram-канал о финансах и Data Science в трейдинге:
– Делаем глубокую аналитику
– Тестируем и разрабатываем торговые стратегии
– Кодим индикаторы и алгоритмы
– Собираем базу знаний для трейдеров

Подписаться
Хотите разбираться в рынках и зарабатывать на них при любых условиях?

Подписывайтесь на наш Telegram-канал о финансах и Data Science в трейдинге:
– Делаем глубокую аналитику
– Тестируем и разрабатываем торговые стратегии
– Кодим индикаторы и алгоритмы
– Собираем базу знаний для трейдеров

Подписаться

Научитесь читать графики всего за 15 минут

Заберите простой мини-гайд для быстрого старта в трейдинге. Идеально для новичков

Подтвердите согласие
🪙 Лучшие биржи для трейдинга криптовалют: топ-10 торговых платформ
Торговля криптовалютой: где лучше торговать? Рассказываем про лучшие платформы для торговли на бирже криптовалют.  Binance Одна из самых крупных биткоин...
Читать далее
Аналитика XRPUSDT на новую неделю (#29)
XRPUSDT закончил неделю уверенной победой покупателей и обновлением трехмесячного максимума. Тренд цены сменил свое направление и движется наверх. Мы действуем...
Читать далее
Как выбрать свой рынок для торговли? Разбираем фондовый, валютный, товарный, криптовалютный рынки и облигации
Торговля на бирже — это не только про выбор акций или валют, но и про понимание, как работают разные рынки....
Читать далее