Топ 10 волатильных пар на Bybit API Python

Топ 10 волатильных пар на Bybit API Python

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

Что делает скрипт?

Наш скрипт выполняет следующие задачи:

  • Подключается к API Bybit для получения данных о торговых парах на спотовом рынке.
  • Анализирует полученные данные, чтобы выявить 10 самых волатильных пар за последние 24 часа.
  • Выводит результаты анализа в удобочитаемом формате.
  • Обновляет данные каждый час, что позволяет постоянно отслеживать изменения на рынке.

Ключевые функции скрипта

Получение данных с Bybit API

Функция get_bybit_data() делает запрос к API Bybit, чтобы получить актуальные данные по всем спотовым торговым парам. Она использует библиотеку requests и обрабатывает возможные ошибки соединения.

Пример реализации:

def get_bybit_data():
    url = "https://api.bybit.com/v5/market/tickers"
    params = {"category": "spot"}
    try:
        response = requests.get(url, params=params, timeout=10)
        response.raise_for_status()
        data = response.json()
        if data.get('retCode') == 0:
            return data.get('result', {}).get('list', [])
        else:
            print(f"Ошибка API: {data.get('retMsg')}")
            return []
    except requests.exceptions.RequestException as e:
        print(f"Ошибка подключения к Bybit API: {e}")
        return []
Анализ волатильности

Функция find_top_volatile_pairs(data) вычисляет волатильность каждой торговой пары, основываясь на разнице между максимальной и минимальной ценой за последние 24 часа. Она также сортирует результаты и выбирает топ-10.

Пример кода:

def find_top_volatile_pairs(data):
    volatile_pairs = []
    for pair in data:
        high = float(pair['highPrice24h'])
        low = float(pair['lowPrice24h'])
        if low > 0:
            volatility = (high - low) / low * 100
            volatile_pairs.append({
                'symbol': pair['symbol'],
                'volatility': volatility,
                'high': high,
                'low': low
            })
    return sorted(volatile_pairs, key=lambda x: x['volatility'], reverse=True)[:10]

Как работает программа?

Основная логика заложена в функции main(). Она запускает цикл, который раз в час обновляет данные, анализирует их и выводит топ-10 самых волатильных пар. Это позволяет оставаться в курсе рыночной ситуации.

Пример основного цикла:

def main():
    print("Анализ волатильности на Bybit...")
    while True:
        data = get_bybit_data()
        if data:
            top_volatile_pairs = find_top_volatile_pairs(data)
            print("\nТоп-10 самых волатильных пар за 24 часа:")
            for pair in top_volatile_pairs:
                print(f"{pair['symbol']}: Волатильность: {pair['volatility']:.2f}% (High: {pair['high']}, Low: {pair['low']})")
        else:
            print("Не удалось получить данные.")
        print("\nОжидание 1 час для следующего обновления...")
        time.sleep(3600)

Преимущества автоматизированного анализа

  • Экономия времени: Скрипт автоматически обновляет данные и анализирует их.
  • Удобство: Результаты выводятся в понятном формате.
  • Точность: Использование API Bybit обеспечивает актуальные данные напрямую от биржи.

Заключение

Этот Python-скрипт станет отличным инструментом для мониторинга волатильности криптовалют. Вы можете модифицировать его под свои задачи, добавив, например, уведомления или интеграцию с другими API.

Попробуйте сами: скопируйте код, настройте под свои нужды и запустите! Это прекрасная возможность автоматизировать рутинные задачи и оставаться в курсе событий на криптовалютном рынке.

Полный код:

import requests
import time

def get_bybit_data():
    """Получает данные о торговых парах с Bybit."""
    url = "https://api.bybit.com/v5/market/tickers"
    params = {"category": "spot"}  # Указываем категорию (spot - спотовый рынок)
    try:
        response = requests.get(url, params=params, timeout=10)
        response.raise_for_status()  # Выбрасывает исключение для статусов >= 400
        data = response.json()
        if data.get('retCode') == 0:
            return data.get('result', {}).get('list', [])
        else:
            print(f"Ошибка API: {data.get('retMsg')}")
            return []
    except requests.exceptions.RequestException as e:
        print(f"Ошибка подключения к Bybit API: {e}")
        return []

def find_top_volatile_pairs(data):
    """Находит пары с самой высокой волатильностью."""
    volatile_pairs = []
    for pair in data:
        high = float(pair['highPrice24h'])
        low = float(pair['lowPrice24h'])
        if low > 0:  # Избегаем деления на ноль
            volatility = (high - low) / low * 100
            volatile_pairs.append({
                'symbol': pair['symbol'],
                'volatility': volatility,
                'high': high,
                'low': low
            })
    # Сортируем пары по волатильности в убывающем порядке
    volatile_pairs = sorted(volatile_pairs, key=lambda x: x['volatility'], reverse=True)[:10]
    return volatile_pairs

def main():
    print("Анализ волатильности на Bybit...")
    while True:
        data = get_bybit_data()
        if data:
            top_volatile_pairs = find_top_volatile_pairs(data)
            print("\nТоп-10 самых волатильных пар за 24 часа:")
            for pair in top_volatile_pairs:
                symbol = pair['symbol']
                volatility = pair['volatility']
                high = pair['high']
                low = pair['low']
                print(f"{symbol}: Волатильность: {volatility:.2f}% (High: {high}, Low: {low})")
        else:
            print("Не удалось получить данные.")

        print("\nОжидание 1 час для следующего обновления...")
        time.sleep(3600)  # Обновление каждый час

if __name__ == "__main__":
    main()
Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

Чтобы оставить комментарий, пожалуйста, войдите или зарегистрируйтесь.