В данной статье рассмотрим, как написать скрипт на 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()
Пока нет комментариев. Будьте первым!