Сбор Long/Short Ratio с криптобирж: API, парсинг и TimescaleDB

Сбор данных Long/Short Ratio с криптобирж: технический разбор Трейдеру нужна годовая история Long/Short Ratio по 50+ инструментам для бэктестинга стратегий. Биржи хранят максимум месяц данных — Binance отдаёт только последние 500 записей (около 30 дней с максимальной детализацией 5-минутных свече

Направления блокчейн-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1452
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1270
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1011

Сбор данных Long/Short Ratio с криптобирж: технический разбор

Трейдеру нужна годовая история Long/Short Ratio по 50+ инструментам для бэктестинга стратегий. Биржи хранят максимум месяц данных — Binance отдаёт только последние 500 записей (около 30 дней с максимальной детализацией 5-минутных свечей), Bybit — 200, OKX — 100. Собирать вручную через UI — сотни человеко-часов, а один пропуск данных разрушает backtest. Мы построили систему на async Python, которая непрерывно стягивает данные с трёх бирж одновременно, нормализует и складывает в TimescaleDB. Теперь история доступна за любой период, а добавление нового символа занимает 5 минут — достаточно прописать его в конфиге. В итоге трейдер получает непрерывный поток данных с задержкой менее минуты, пригодный для real-time индикаторов и сентимент-анализа криптовалют. Ниже — архитектура, подводные камни и готовое решение.

Официальные API для L/S ratio

Начинать нужно с официальных endpoints — они стабильны и не требуют браузерной автоматизации. Вот доступные источники:

Биржа Эндпоинт Данные Лимит истории Аутентификация
Binance Futures /futures/data/topLongShortAccountRatio Top trader account ratio 500 записей, ~30 дней Нет (public)
Binance Futures /futures/data/globalLongShortAccountRatio Все аккаунты 500 записей Нет
Bybit /v5/market/account-ratio Account ratio 200 записей Нет
OKX /api/v5/rubik/stat/contracts/long-short-account-ratio Account ratio 100 записей Нет
CoinGlass (агрегатор) /api/v1/longShort Агрегированные с 4+ бирж Зависит от подписки API key (платный)

Согласно документации Binance Futures API, данные доступны только за последние 30 дней. Для долгосрочного анализа необходим постоянный сбор.

Binance Futures — наиболее полные данные, несколько эндпоинтов:

# Top trader long/short account ratio GET https://fapi.binance.com/futures/data/topLongShortAccountRatio?symbol=BTCUSDT&period=5m&limit=30 # All accounts ratio (retail sentiment) GET https://fapi.binance.com/futures/data/globalLongShortAccountRatio?symbol=BTCUSDT&period=1h&limit=30 

Ответ: массив [{symbol, longShortRatio, longAccount, shortAccount, timestamp}]. Исторические данные ограничены: limit=500 максимум, period от 5m до 1d. Данные старше ~30 дней недоступны через API — нужно собирать самостоятельно.

Bybit — endpoint /v5/market/account-ratio:

GET https://api.bybit.com/v5/market/account-ratio?category=linear&symbol=BTCUSDT&period=1h&limit=50 

OKX/api/v5/rubik/stat/contracts/long-short-account-ratio:

GET https://www.okx.com/api/v5/rubik/stat/contracts/long-short-account-ratio?ccy=BTC&period=1H 

OKX не требует аутентификации для публичных market data endpoints. Rate limit: 20 req/2 сек.

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

Данные нужно собирать регулярно — биржи хранят историю ограниченно, поэтому собственная база данных необходима для анализа длинных периодов. PostgreSQL с расширением TimescaleDB — оптимальный выбор для time-series данных: она даёт автоматическое партиционирование по времени и continuous aggregates, ускоряющие range-запросы в 3 раза по сравнению с обычным PostgreSQL. InfluxDB быстрее на запись, но проигрывает в гибкости JOIN. Плоские CSV-файлы дешевы, но не поддерживают индексы и не защищают от дубликатов. Именно поэтому мы остановились на TimescaleDB — гарантия уникальности через ON CONFLICT и скорость вставки до 1000 записей/сек на одном узле.

import httpx import asyncio from datetime import datetime import asyncpg ENDPOINTS = { "binance_top_account": "https://fapi.binance.com/futures/data/topLongShortAccountRatio", "binance_global": "https://fapi.binance.com/futures/data/globalLongShortAccountRatio", "bybit": "https://api.bybit.com/v5/market/account-ratio", } async def collect_ls_ratio(symbol: str, period: str, db: asyncpg.Connection): async with httpx.AsyncClient() as client: resp = await client.get( ENDPOINTS["binance_global"], params={"symbol": symbol, "period": period, "limit": 1}, timeout=10.0, ) data = resp.json()[0] await db.execute(""" INSERT INTO ls_ratio (exchange, symbol, period, long_ratio, short_ratio, ts) VALUES ($1, $2, $3, $4, $5, $6) ON CONFLICT (exchange, symbol, period, ts) DO NOTHING """, "binance", symbol, period, float(data["longAccount"]), float(data["shortAccount"]), datetime.fromtimestamp(data["timestamp"] / 1000)) 

ON CONFLICT DO NOTHING — защита от дубликатов при повторном сборе. Уникальный индекс по (exchange, symbol, period, ts).

Как быть, если биржа не даёт API?

Некоторые биржи (Gate.io, Bitfinex) не публикуют L/S ratio через официальный API, но показывают его на веб-странице. Для таких случаев используем headless браузер через Playwright:

from playwright.async_api import async_playwright async def scrape_gateio_ls(symbol: str) -> float: async with async_playwright() as p: browser = await p.chromium.launch(headless=True) page = await browser.new_page() # Перехватываем XHR запросы к internal API ls_data = {} page.on("response", lambda r: capture_ls_response(r, ls_data)) await page.goto(f"https://www.gate.io/futures/{symbol}") await page.wait_for_timeout(3000) await browser.close() return ls_data.get("longShortRatio") 

Официальное API в 10 раз стабильнее, чем headless-парсинг. Браузерный парсинг нестабилен: верстка меняется, появляются anti-bot меры (Cloudflare, PerimeterX). Для production используем только как fallback, с мониторингом успешности сбора.

Практические замечания и типичные ошибки

Rate limiting: при сборе данных по 20+ символам с нескольких бирж легко получить HTTP 429. Используем asyncio.Semaphore для ограничения одновременных запросов и exponential backoff при ошибках. Binance Futures: 1200 weight в минуту, каждый запрос = 1 weight для market data.

Нормализация данных: Binance возвращает longAccount как долю (0.65 = 65% long), OKX — как ratio (1.86 = 1.86:1 long/short). Нормализуем к единому формату перед записью в БД.

Временные зоны: все timestamps конвертируем в UTC. Binance возвращает Unix milliseconds, Bybit тоже, OKX — ISO 8601 строку.

Как мы строим систему сбора

Наш процесс включает:

  1. Аналитика: выявляем все необходимые символы и периоды. Определяем, какие биржи дают L/S ratio через API, а где нужен парсинг.
  2. Проектирование архитектуры: выбираем стек (async Python, httpx, asyncpg) и схему хранения в TimescaleDB.
  3. Разработка парсеров: пишем асинхронные функции для каждой биржи с учётом rate limiter.
  4. Интеграция с БД: создаём гипертаблицу с партиционированием по дням и continuous aggregates для ускорения запросов.
  5. Мониторинг и алерты: настраиваем оповещения при падении успешности сбора ниже 95%.

Каждый этап тестируем на небольшом наборе данных, затем масштабируем.

Что входит в наше решение под ключ

Мы предлагаем готовую систему сбора и хранения L/S данных:

  • Настройка парсеров под 3+ биржи (Binance, Bybit, OKX) с возможностью добавления новых.
  • Хранение в TimescaleDB с автоматическим партиционированием и retention policy.
  • Мониторинг сбора с алертами при падении успешности ниже 95%.
  • API для доступа к собранным данным (фильтрация по бирже, символу, периоду).
  • Документация и обучение команды.

Оценим ваш проект за 2 рабочих дня — напишите нам. Гарантируем доставку данных с момента запуска. Стоимость решения — от $1500 до $5000 в зависимости от количества символов и бирж. Экономия на инфраструктуре хранения может достигать $2000 в месяц. Уже реализовали для 10+ проектов с общим объёмом хранения более 500 млн записей. Свяжитесь с нами для консультации — обсудим вашу задачу без обязательств.

Почему стоит доверить сбор нам?

5 лет опыта в блокчейн-разработке, десятки проектов по парсингу и анализу данных. Используем production-стек: async Python, httpx, asyncpg, TimescaleDB. Все решения покрыты мониторингом и имеют резервные каналы сбора. Средняя экономия для наших клиентов — $1000-3000 в месяц. Получите консультацию — свяжитесь с нами.