Сбор исторических свечных данных (OHLCV) с бирж для бэктестинга

Парсинг исторических данных свечей (OHLCV) с бирж Сбор исторических OHLCV данных с криптобирж требует продуманной архитектуры. Мы сталкивались с этой задачей десятки раз: разные площадки, лимиты, форматы. «Ручной» парсинг через браузер — путь в никуда. Нужна система, которая соберёт данные с Bina

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1451
  • 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

Парсинг исторических данных свечей (OHLCV) с бирж

Сбор исторических OHLCV данных с криптобирж требует продуманной архитектуры. Мы сталкивались с этой задачей десятки раз: разные площадки, лимиты, форматы. «Ручной» парсинг через браузер — путь в никуда. Нужна система, которая соберёт данные с Binance, Uniswap и ещё 10+ площадок в единую TimescaleDB, не упираясь в rate limits. Один из наших проектов обрабатывал 50 инструментов в реальном времени — без единой блокировки IP.

Почему важен rate limiter для OHLCV парсинга?

Наивный sleep(100) между запросами — причина потери данных и блокировки IP. Binance даёт 1200 запросов в минуту на IP. Если собирать 100 инструментов одновременно, превышение случается за секунды. #rate limiter# с динамической регулировкой — единственный рабочий подход. Мы реализовали RateLimiter с отдельными bucket для каждой биржи. Он стабильно держит 20 req/s без превышений.

CEX vs DEX: разные источники, разная логика

Характеристика CEX (Binance, OKX) DEX (Uniswap, Curve)
API REST / WebSocket Нет нативного OHLCV
Данные Агрегированные свечи Из swap-событий (on-chain)
Глубина С момента запуска биржи С момента деплоя контракта
Rate limits 1200 req/min Блокчейн — отсутствуют
Сложность Средняя (ccxt) Высокая (The Graph / RPC)

CEX — стандарт: чистые свечи, минимальный gap. DEX — нужна индексация событий и пересчёт цены через sqrtPriceX96. Наш сборщик объединяет оба подхода под единым интерфейсом.

Как собирать OHLCV данные с DEX без нативного API?

Для DEX мы используем индексацию swap-событий через The Graph или прямой RPC. События содержат sqrtPriceX96, из которого вычисляется цена. Далее агрегируем их в свечи заданного таймфрейма. Это позволяет получать данные для любого пула Uniswap V3. Схема хранения в TimescaleDB с hypertables даёт возможность быстро агрегировать по времени.

Сбор исторических OHLCV данных: этапы работы

  1. Аналитика — определяем список бирж, инструментов, таймфреймов.
  2. Проектирование — схема БД (TimescaleDB hypertable), архитектура сборщика.
  3. Реализация — пишем скрипты парсинга, rate limiter, логирование.
  4. Тест — загружаем 1 млн свечей, проверяем gap-ы, скорость, дубликаты.
  5. Деплой — на ваш сервер или облако (AWS/GCP), настройка алертов.

Как мы это делаем: стек и реализация

Основной инструмент — библиотека ccxt для 100+ бирж. Поверх неё — собственный слой rate limiting, логирования и #инкрементальной загрузки#. Ключевые компоненты:

  • Rate Limiter с #token bucket# (1200 req/min для Binance)
  • Мультибиржевой сборщик на ccxt с поддержкой retry и fallback
  • Хранилище на TimescaleDB с hypertables, compression и continuous aggregates

Код rate limiter и сборщика — в оригинальной статье. Данные пишутся в TimescaleDB, где автоматически создаются дневные агрегации через Continuous Aggregates. Наш сборщик в 3 раза быстрее стандартного подхода за счёт параллелизации и динамического управления лимитами.

Сравнение методов rate limiting:

Метод Пропускная способность Сложность реализации
Token bucket Высокая Средняя
Sliding window log Очень высокая Высокая
Fixed window Низкая Низкая

Для высоконагруженных сценариев используем sliding window log, записывая timestamp каждого запроса в Redis. Но для 95% задач достаточно нашего RateLimiter.

Пример конфигурации rate limiter
const rateLimiter = new TokenBucket({ capacity: 1200, fillRate: 1200, // per minute tokens: 1200 }); 

Что входит в работу

  • Документация — описание схемы БД, API методов, инструкция по развертыванию
  • Код — скрипты для сбора, обновления, агрегации (TypeScript + SQL)
  • Доступы — настройка TimescaleDB, создание пользователей
  • Обучение — 2 сессии по 1 часу для вашей команды
  • Поддержка — 1 месяц после деплоя (ответы в течение 24 часов)

Сроки ориентировочно

От 1 до 3 недель в зависимости от количества бирж и размера истории. Стоимость рассчитывается индивидуально — свяжитесь с нами, и мы оценим ваш проект. Это избавляет от затрат на подписку сторонних API (до $500/мес) и сокращает время на инженерные изыскания. Получите готовое решение для вашего бэктестинга.

Типичные ошибки при сборе OHLCV

  • Игнорирование rate limits — блокировка IP и потеря времени
  • Хранение в CSV — невозможно эффективно агрегировать и искать
  • Отсутствие алертов — gap в данных остаётся незамеченным неделями

Мы устраняем эти проблемы на этапе проектирования. 10+ проектов по сбору OHLCV — наш опыт гарантирует стабильный пайплайн. Понятие OHLCV восходит к традиционному биржевому анализу (Wikipedia). Закажите консультацию, и вместе спроектируем решение под ваши задачи. Свяжитесь с нами для оценки вашего проекта.