Войти
Главная / Data science в трейдинге / 🐍 ByBit API + Python. Торговый бот на python, гайд по автоматизации сделок
01 Шаг 1. Трейдинг бот на python: импортируем библиотеки
02Шаг 2. Выбираем стратегию исполнения ордеров
03Шаг 3. Определяем правила торговли для лимитного ордера
04Шаг 4. Создаем HTTP-сессию
05Размещаем одиночный лимитный ордер 
06Шаг 5. Определяем правила торговли для рыночного ордера
07Шаг 6. Размещаем одиночный рыночный ордер
08Шаг 7. Размещаем несколько ордеров
09Заключение: торговый робот на python
Хотите зарабатывать на трейдинге?

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

Подписаться

🐍 ByBit API + Python. Торговый бот на python, гайд по автоматизации сделок

С помощью Python можно создавать программы и скрипты, которые будут выполнять ваши торговые правила, а значит — упростят и облегчат работу и усилят торговую стратегию. Разбираем на примере с кодом, как сделать торгового бота на питоне, и как открывать и закрывать лимитные ордера в ByBit с Python. 

Когда вы установите правила торговли в Bybit с помощью Python , ваш скрипт будет автоматически открывать и закрывать сделки согласно этим правилам. Также через скрипты можно настроить выставление стоп-лоссов, прибыльные уровни и другие параметры. В этой статье поговорим именно об ордерах.

Алгоритм действий для создания биржевого робота на питоне такой: сначала устанавливаем нужные библиотеки, затем выбираем способ исполнения ордеров и прописываем функции для размещения ордеров.

 Шаг 1. Трейдинг бот на python: импортируем библиотеки

Библиотеки нам нужны для работы с API Bybit. Мы будем использовать pybit A — облегченный универсальный модуль для API Bybit HTTP и WebSocket. Pybit использует requests и websocket-client для своих методов наряду с другими встроенными модулями. Модуль может быть установлен вручную или через PyPI с pip: pip install pybit. 

Функция для импорта библиотек:

1
2
3
4
5
6
7
8
9
import pandas as pd
 
import numpy as np
 
import pybit
 
from pybit.unified_trading import HTTP
 
import uuid

Шаг 2. Выбираем стратегию исполнения ордеров

На платформе Bybit есть три способа исполнения ордеров «по времени действия» (time in force): 

  • GTC (Good ‘Til Canceled) — ордер будет активным и открытым вплоть до его исполнения или отмены трейдером вручную. Подойдет тем, кто может дождаться завершения всех сделок по указанной цене и гибко отменять незаключенные контракты независимо от времени. 
  • OK (Fill or Kill) — ордер исполняется полностью по стоимости заказа или выше  или отменяется. Стратегия используют скальпирующие или дневные трейдеры, которые находятся в поиске краткосрочной выгоды на рынке. 
  • IOC (Immediate or Cancel) — ордер исполняется мгновенно, частично или полностью. Ордера, которые не проданы по указанной стоимости, аннулируются. Стратегию используют, чтобы избежать исполнения крупных ордеров по цене, отличающейся от идеальной. 

Выбор стратегии зависит от торговых целей и условий рынка. GTC — самая распространенная стратегия, она позволяет сохранять ордер открытым до его выполнения. FOK и IOC подойдут, когда нужно получить мгновенное или частичное исполнение ордера.

Шаг 3. Определяем правила торговли для лимитного ордера

Лимитный ордер размещается с конкретной ценой, по которой мы планируем купить или продать актив. Перед размещение лимитного ордера важно выставить его параметры. Это поможет нам контролировать цену и тайминг ордера.

Функция для определения параметров лимитного ордера:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CATEGORY = "spot"  
 
SYMBOL = "BTCUSDT"  
 
SIDE = "Buy"  
 
ORDER_TYPE = "Limit"  
 
QTY = "0.001"  
 
PRICE = "1700"
 
TIME_IN_FORCE = "GTC"  
 
ORDER_LINK_ID = str(uuid.uuid4())
 
REDUCE_ONLY = False

Пояснение параметров:

  • CATEGORY — форма сделки; 
  • SYMBOL — название актива/торговой пары;
  • SIDE — покупка или продажа;
  • ORDER_TYPE — тип ордера;
  • QTY — количество заказа;
  • PRICE — цена;
  • TIME_IN_FORCE — определяет, как долго ордер будет оставаться действительным, прежде чем автоматически отменится; 
  • REDUCE_ONLY — идентификатор ссылки на ордер, показывает отсутствие take profit и stop loss.

Шаг 4. Создаем HTTP-сессию

Чтобы разместить один ордер, нам нужно написать функцию создания HTTP-сессии, в которой мы подключаемся к нашему аккаунту Bybit. HTTP-сеанс позволяет установить постоянное соединение между приложением на Python и Bybit через API. Сессия служит для отправки запросов к API и получения ответов от него. 

Функция для создания HTTP-сессии:

1
2
3
4
5
6
7
session = HTTP
 
testnet=False
 
api_key="api_key",
 
api_secret="api_secret"

Пояснение параметров:

  • testnet — альтернативная, «пробная» версия блокчейна, некий черновик проекта. Валюта Testnet не имеет реальной стоимости и позволяет проводить эксперименты и тестировать разные идеи. 
  • api_key — уникальный идентификатор, который вы получаете при создании API-ключа на платформе Bybit. Ключ нужен для идентификации приложения или скрипта в Bybit.

Размещаем одиночный лимитный ордер 

Функция для размещения нового лимитного ордера:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def place_new_limit_order(category, symbol, side, orderType, qty, price, timeInForce, orderLinkId, reduceOnly):
 
   new_limit_order = session.place_order(
 
       category=category,
 
       symbol=symbol,
 
       side=side,
 
       orderType=orderType,
 
       qty=qty,
 
       price=price,
 
       timeInForce=timeInForce,
 
       orderLinkId=orderLinkId,
 
       reduceOnly=reduceOnly,
 
   )
 
   return(new_limit_order)

Шаг 5. Определяем правила торговли для рыночного ордера

Теперь создаем функцию для рыночного ордера, который предназначен для мгновенного исполнения по текущей рыночной цене. 

Функция для определения параметров рыночного ордера: 

1
2
3
4
5
6
7
8
9
10
11
12
13
SYMBOL_1 = "ETHUSDT",  
 
SIDE_1 = "Buy",  
 
ORDER_TYPE_1 = "Market",  
 
QTY_1 = "0.01"
 
TIME_IN_FORCE_1 = "FOK"
 
CLOSE_ON_TRIGGER_1 = False
 
POSITION_IDX_1 = 1  # hedge-mode Buy side

Пояснение параметров:

  • SYMBOL_1 — название актива/торговой пары для ордера; 
  • SIDE_1 — покупка или продажа;
  • ORDER_TYPE_1 — тип ордера;
  • QTY_1 —  # количество заказа;
  • TIME_IN_FORCE_1 —  определяет, как долго ордер будет оставаться действительным, прежде чем он автоматически отменится;
  • CLOSE_ON_TRIGGER_1 — команда «закрыть по триггеру» гарантированно закрывает ордер независимо от маржинальных требований.

Шаг 6. Размещаем одиночный рыночный ордер

Функция для размещения нового рыночного ордера:

1
2
3
4
5
6
7
8
9
10
11
12
def place_new_market_order(category, symbol, side, orderType, qty, timeInForce, closeOnTrigger, positionIdx):
   new_market_order = session.place_order(
       category=category,
       symbol=symbol,
       side=side,
       orderType=orderType,
       qty=qty,
       timeInForce=timeInForce,
       closeOnTrigger=closeOnTrigger,
       positionIdx=positionIdx,
   )
   return(new_market_order)

Шаг 7. Размещаем несколько ордеров

На Bybit можно разместить несколько ордеров с помощью Python, используя данные из библиотеки JSON. Здесь указан пример обработки JSON и использования библиотеки requests для открытия и закрытия ордеров. 

Функция для открытия нескольких ордеров одновременно: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def create_order(category, symbol, side, orderType, price, qty, timeInForce, orderLinkId):
 
   new_order = session.place_order(
 
       category=category,
 
       symbol=symbol,
 
       side=side,
 
       orderType=orderType,
 
       qty=qty,
 
       timeInForce=timeInForce,
 
       orderLinkId=orderLinkId,
 
   )
 
   print(new_order)
 
orders = [
 
   {"category": "Spot", "symbol": "BTCUSD", "side": "Buy", "orderTtype": "Limit", "price": 50000, "qty": 0.001,
 
    "timeInForce": "GTC", "orderLinkId": str(uuid.uuid4())},
 
   {"category": "Spot", "symbol": "ETHUSD", "side": "Buy", "orderType": "Market", "price": None, "qty": 0.005,
 
    "timeInForce": "FOK", "orderLinkId": str(uuid.uuid4())},
 
]
 
for order in orders:
 
   print(create_order(order["symbol"], order["side"], order["order_type"], order["price"], order["qty"], order["timeInForce"], order["orderLinkId"] ))

Заключение: торговый робот на python

Использование Python для автоматической торговли на Bybit с помощью библиотеки pybit позволяет автоматически открывать и закрывать сделки. Вы подключаетесь к API Bybit и пишете скрипты для выполнения торговых стратегий.

Для этого нужно заранее определить правила торговли и параметры ордеров (тип, цена, количество). С помощью функций place_new_limit_order и place_new_market_order можно размещать ордера на рынке.

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

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

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

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

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

Подписаться
S&P 500 падает, Трамп вводит тарифы, Украина и Россия обсуждают перемирие — что это значит для инвесторов?
На связи Григорий, ваш финансовый аналитик, трейдер и инвестор. Сегодня обсудим последние события на мировых рынках, включая новые тарифы от...
Читать далее
⛓️💥 Всё, что нужно знать об ордерах стоп-лосс и тейк-профит
Стоп-лосс и тейк-профит — два важных инструмента управления рисками, которые используют трейдеры для защиты капитала и фиксации прибыли. Эти инструменты...
Читать далее
🔐 Риски криптотрейдера: от банкротства биржи до штрафов
Риски есть при любых финансовых операциях. Задача трейдера — не отказаться от рисков, а решить, до какой степени он готов...
Читать далее