Skip to main content

Exchange Data Downloader

exchange-data-downloader — простая библиотека для скачивания и распаковки исторических данных с криптовалютных бирж (Binance и Bybit). Она автоматически создаёт структуру папок, кэширует уже загруженные файлы и умеет работать с разными типами данных (klines, trades, funding и др.). Отлично подходит для бэктестов, аналитических пайплайнов и подготовки датасетов.

Установка

pip install exchange-data-downloader

или

uv add exchange-data-downloader

или

poetry add exchange-data-downloader

Быстрый старт

from exdata.binance import Downloader

downloader = Downloader(data_folder_path="data/binance")
csv_path = downloader.download(
    symbol="BTCUSDT",
    year=2024,
    month=4,
    timeframe="1h",
    market_type="futures/um",
    period_type="monthly",
    data_type="klines",
    unzip=True,
)

print(f"Файл сохранён по пути: {csv_path}")
  • year, month, day передаются числами — библиотека сама добавит ведущие нули.
  • Если файл уже скачан и распакован, повторный вызов просто вернёт путь из кэша.
  • Параметр unzip по умолчанию равен False — библиотека вернёт путь к ZIP. Передайте unzip=True, если нужен путь к распакованному CSV.

Дополнительные примеры

Загрузка дневных trades

csv_path = downloader.download(
    symbol="TRXUSDT",
    year=2025,
    month=3,
    day=15,
    data_type="trades",
    period_type="daily",
    market_type="spot",
)

Обход диапазона дат

from exdata.utils import generate_intervals

intervals = generate_intervals(
    start_year=2024,
    start_month=12,
    start_day=1,
    end_year=2025,
    end_month=1,
    end_day=5,
)

for current in intervals:
    downloader.download(
        symbol="ETHUSDT",
        year=current.year,
        month=current.month,
        day=current.day,
        data_type="aggTrades",
        period_type="daily",
        market_type="futures/um",
        timeframe=None,
    )

Функция generate_intervals возвращает кортеж объектов date, что упрощает обход диапазонов.

Bybit

Данные берутся с public.bybit.com. Доступны только сделки (trades):

market_type period_type Что внутри
futures daily USDT, USDC (...PERP), инверсные (BTCUSD) и срочные (BTC-26DEC25) контракты
spot daily, monthly Спотовые пары
from exdata import BybitDownloader

downloader = BybitDownloader(data_folder_path="data/bybit")

# Сделки по фьючерсу за день
csv_path = downloader.download(
    symbol="BTCUSDT",
    year=2025,
    month=3,
    day=15,
    market_type="futures",
    period_type="daily",
    unzip=True,
)

# Сделки по споту за месяц
gz_path = downloader.download(
    symbol="ETHUSDT",
    year=2025,
    month=3,
    market_type="spot",
    period_type="monthly",
)
  • Архивы Bybit имеют формат .csv.gz. При unzip=False возвращается путь к .csv.gz, при unzip=True — к распакованному .csv.
  • Время в файлах: у фьючерсов — секунды (float), у спота — миллисекунды.
  • Файл monthly для спота появляется только после окончания месяца.
  • Для market_type="futures" доступен только period_type="daily", иначе будет InvalidParamsError.
  • Параметра timeframe нет: свечи Bybit (kline_for_metatrader4) библиотека не поддерживает.

Полезные замечания

  • Для kline-подобных типов (klines, markPriceKlines, indexPriceKlines и т.д.) параметр timeframe обязателен.
  • Для period_type="daily" необходимо указать день (day), для monthly — наоборот, day не используется.
  • Библиотека выбрасывает InvalidParamsError, если параметры указаны некорректно, и NotFoundError, если источник не вернул данные.

Используйте exchange-data-downloader, чтобы не тратить время на ручные скачивания и сосредоточиться на аналитике. Удачных тестов!

Metadata

Release files for exchange-data-downloader 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for exchange-data-downloader 0.3.0
File Size Uploaded
exchange_data_downloader-0.3.0.tar.gz 10.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for exchange-data-downloader 0.3.0
File Interpreter ABI Platform
exchange_data_downloader-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 25.3 kB

Release files / exchange_data_downloader-0.3.0.tar.gz

Download URL exchange_data_downloader-0.3.0.tar.gz
Size 10.6 kB
Tags Source
SHA-256 checksum
How to use checksums
76ae38c20aa3ae2a692a20ff38ea156b3c7825aa2781f3fe5758301f6d585b5a
BLAKE2b-256 checksum
How to use checksums
902fe9f7abb85cea5d82d8cacab8e9de1e4e24a6be748c9f7d201a54cdc62c89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / exchange_data_downloader-0.3.0-py3-none-any.whl

Download URL exchange_data_downloader-0.3.0-py3-none-any.whl
Size 14.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0da317ba38781ca8a22ef7ec7bb45416b9952c63ea787cfc37058bbc888d82ed
BLAKE2b-256 checksum
How to use checksums
6e9004fdb44d10a56ce7755e3045c59d05c9aee6a46bcc895fbaeebe8bae4104
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page