requests в Python. Вы научитесь получать, обрабатывать и интерпретировать ценную информацию о рыночных движениях, вызванных крупными ликвидациями, что является критически важным для количественного анализа и разработки торговых стратегий.Исходный код
Представленный ниже Python-скрипт демонстрирует, как подключиться к Coinglass API, запросить исторические данные о ликвидациях для конкретной торговой пары в заданном временном диапазоне и обработать полученный ответ. Мы используем библиотеку requests для выполнения HTTP-запросов и datetime для удобной работы со временем.
import requests
import json
from datetime import datetime, timedelta
# Ваш API ключ Coinglass. Получите его на сайте Coinglass (https://www.coinglass.com/api-key).
# Рекомендуется хранить ключ в переменных окружения, а не прямо в коде.
COINGLASS_API_KEY = 'YOUR_COINGLASS_API_KEY'
BASE_URL = 'https://open-api.coinglass.com/api'
def get_historical_liquidations(
symbol: str,
start_time_ms: int,
end_time_ms: int,
interval: str = 'M1' # M1, M5, M15, M30, H1, H4, H12, D1, W1
) -> list:
"""
Получает исторические данные о ликвидациях с Coinglass API.
:param symbol: Торговая пара, например, 'BTCUSDT'.
:param start_time_ms: Начальное время в формате Unix timestamp (миллисекунды).
:param end_time_ms: Конечное время в формате Unix timestamp (миллисекунды).
:param interval: Интервал агрегации данных (например, 'M1' для 1 минуты).
:return: Список словарей с данными о ликвидациях.
"""
endpoint = f'{BASE_URL}/pro/v1/futures/liquidation_orders'
headers = {
'coinglassSecret': COINGLASS_API_KEY,
'accept': 'application/json'
}
params = {
'symbol': symbol,
'interval': interval,
'startTime': start_time_ms,
'endTime': end_time_ms
}
try:
response = requests.get(endpoint, headers=headers, params=params)
response.raise_for_status() # Вызывает исключение для плохих статусов HTTP (4xx или 5xx)
data = response.json()
if data and data.get('code') == '0' and data.get('data'):
return data['data']
else:
print(f"Ошибка API или пустые данные: {data.get('msg', 'Неизвестная ошибка')}")
return []
except requests.exceptions.RequestException as e:
print(f"Ошибка запроса: {e}")
return []
except json.JSONDecodeError:
print(f"Ошибка декодирования JSON: {response.text}")
return []
if __name__ == '__main__':
# Пример использования: Получение данных о ликвидациях BTCUSDT за последний час
target_symbol = 'BTCUSDT'
# Определяем временной диапазон: последний час от текущего момента UTC
end_dt = datetime.utcnow()
start_dt = end_dt - timedelta(hours=1)
start_timestamp_ms = int(start_dt.timestamp() * 1000)
end_timestamp_ms = int(end_dt.timestamp() * 1000)
print(f"Получение данных о ликвидациях для {target_symbol} с {start_dt} по {end_dt} (UTC)...")
liquidation_data = get_historical_liquidations(
symbol=target_symbol,
start_time_ms=start_timestamp_ms,
end_time_ms=end_timestamp_ms,
interval='M1' # 1-минутные агрегированные данные
)
if liquidation_data:
print(f"Получено {len(liquidation_data)} записей о ликвидациях.")
# Выводим первые 5 записей для примера
for i, entry in enumerate(liquidation_data[:5]):
timestamp_dt = datetime.fromtimestamp(entry['time'] / 1000)
print(f" Время: {timestamp_dt}, Сумма ликвидаций (USD): {entry['amountUsd']}, Тип: {entry['side']}")
# Пример агрегации: общая сумма лонг и шорт ликвидаций
total_long_liquidations_usd = sum(
entry['amountUsd'] for entry in liquidation_data if entry['side'] == 'buy'
)
total_short_liquidations_usd = sum(
entry['amountUsd'] for entry in liquidation_data if entry['side'] == 'sell'
)
print(f"\nОбщая сумма лонг ликвидаций за период: ${total_long_liquidations_usd:,.2f}")
print(f"Общая сумма шорт ликвидаций за период: ${total_short_liquidations_usd:,.2f}")
else:
print("Данные о ликвидациях не получены или произошла ошибка.")
Разбор параметров
Для успешного выполнения запросов к Coinglass API необходимо понимать ключевые параметры:
COINGLASS_API_KEY: Ваш уникальный ключ API от Coinglass. Это обязательный параметр для аутентификации всех запросов к API. Получить его можно после регистрации на сайте Coinglass.BASE_URL: Базовый URL для Coinglass Open API. В данном случае этоhttps://open-api.coinglass.com/api.symbol: Торговая пара, для которой запрашиваются данные о ликвидациях (например,'BTCUSDT','ETHUSDT').start_time_ms: Начальное время временного диапазона в формате Unix timestamp (миллисекунды). Определяет, с какого момента начинать сбор данных.end_time_ms: Конечное время временного диапазона в формате Unix timestamp (миллисекунды). Определяет, до какого момента собирать данные.interval: Интервал агрегации данных. Coinglass API позволяет получать агрегированные данные по различным интервалам, таким как'M1'(1 минута),'M5'(5 минут),'H1'(1 час),'D1'(1 день) и другие. Выбор интервала зависит от требуемой гранулярности анализа.
Как запустить
Чтобы запустить предоставленный скрипт и начать парсинг данных о ликвидациях, выполните следующие шаги:
-
Установите Python: Убедитесь, что у вас установлен Python 3.x. Вы можете скачать его с официального сайта Python.
-
Установите библиотеку
requests: Откройте терминал или командную строку и выполните команду:pip install requests -
Получите API ключ Coinglass: Зарегистрируйтесь на сайте Coinglass и получите ваш персональный API ключ. Он будет использоваться для аутентификации ваших запросов.
-
Настройте скрипт: Откройте файл с исходным кодом и замените
'YOUR_COINGLASS_API_KEY'на ваш реальный API ключ. Для продакшн-систем настоятельно рекомендуется использовать переменные окружения для хранения конфиденциальных данных, например, черезos.getenv('COINGLASS_API_KEY'). -
Сохраните и запустите: Сохраните код в файл с расширением
.py(например,coinglass_liquidations.py). Затем запустите скрипт из терминала:python coinglass_liquidations.py -
Изменение параметров: Вы можете легко изменять значения переменных
target_symbol,start_dt,end_dtиintervalв секцииif __name__ == '__main__':для получения данных по другим активам или временным диапазонам.
Анализ данных о ликвидациях является важным компонентом в разработке торговых стратегий. Для более глубокого понимания механизмов, лежащих в основе рыночных движений, и защиты от манипуляций, рекомендуем ознакомиться с нашей статьей Реализация защиты от Wash Trading в Matching Engine на Python. Если вы занимаетесь арбитражными стратегиями, например, арбитражем ставок финансирования, как описано в статье Арбитраж ставок финансирования (Funding Arbitrage) на OKX: Python и CCXT, понимание ликвидаций поможет в оценке рисков и потенциальной волатильности. Для высокопроизводительной и надежной передачи котировок и других данных между вашими торговыми серверами, рассмотрите использование технологий, описанных в статье gRPC на Python для передачи котировок между торговыми серверами.




