Bybit Historical Downloader (dccd.histo_dl.bybit)¶
Objects to download historical data from Bybit exchange.
- class FromBybit(path, crypto, span, fiat='USDT', form='xlsx', tz='local')[source]¶
Bases:
ImportDataCryptoCurrenciesClass to import crypto-currencies data from the Bybit exchange.
- Parameters:
- pathstr
Root directory for data files.
- cryptostr
Crypto-currency symbol, e.g.
'BTC'.- spanint or str
Candle interval in seconds (minimum 60) or a label such as
'hourly'or'1h'.- fiatstr, optional
Quote currency. Default is
'USDT'. The pair is formed by concatenation (e.g.'BTC'+'USDT'→'BTCUSDT').- formstr, optional
Legacy parameter — ignored. Storage is always Parquet via
DataStore.- tzstr, optional
Timezone for date parsing:
'local'(default),'UTC', or any IANA timezone name.
- Attributes:
- pairstr
Pair symbol (e.g. ‘BTCUSDT’).
- start, endint
Timestamps bounding the download.
- spanint
Seconds between observations.
- full_pathstr
Directory managed by
DataStore—{path}/bybit/ohlc/{pair}/{span}/.
Methods
import_data([start, end])Download data from Bybit for a specific time interval.
save([form, by_period])Save
dfto disk viaDataStore.get_data([format])Return the downloaded data.
import_trades([start, end])Fetch individual trades for a time window.
save_trades([form, by_period])Save
trades_dfviaDataStore.import_orderbook([depth])Fetch the current order book snapshot at a given depth.
save_orderbook([form])Save
orderbook_dfviaDataStore.See also
FromBinance,FromCoinbase,FromKraken,FromOKX
Notes
Uses the Bybit v5 REST API [1].
References
- get_data(format='polars')¶
Return the downloaded data.
- Parameters:
- format{‘polars’, ‘pandas’}, optional
Output format. Default is ‘polars’.
- Returns:
- pl.DataFrame
Current data in the requested format.
- import_data(start='last', end='now')[source]¶
Download data from Bybit for a specific time interval.
- Parameters:
- startint or str
Timestamp of the first observation or date ‘yyyy-mm-dd hh:mm:ss’.
- endint or str
Timestamp of the last observation or date ‘yyyy-mm-dd hh:mm:ss’.
- Returns:
- datapl.DataFrame
OHLCV data sorted and cleaned.
- import_orderbook(depth=50)¶
Fetch the current order book snapshot at a given depth.
Downloads the bid/ask ladder from the exchange REST API, validates each level, and stores the result in
orderbook_df. Usesave_orderbookto persist to disk.- Parameters:
- depthint, optional
Number of price levels to fetch per side (bids + asks), default 50. Maximum varies by exchange.
- Returns:
- ImportDataCryptoCurrencies
Returns
selffor method chaining.
Notes
Order book REST endpoints return a current snapshot only. Historical order book data is not available via public APIs.
- import_trades(start=0, end='now')¶
Fetch individual trades for a time window.
Downloads executed trades from the exchange REST API, validates each record, and stores the result in
trades_df. Usesave_tradesto persist to disk.- Parameters:
- startint or str, optional
Start of the time window. Accepts a Unix timestamp (int), a date string
'yyyy-mm-dd hh:mm:ss', or0(default, meaning “as far back as the API allows”).- endint or str, optional
End of the time window.
'now'(default) resolves to the current UTC time. Accepts a Unix timestamp or date string.
- Returns:
- ImportDataCryptoCurrencies
Returns
selffor method chaining.
Notes
Exchanges vary in how much history they expose:
Binance and Kraken provide full paginated history.
OKX exposes several months of history via cursor pagination.
Bybit returns the ~1 000 most recent trades regardless of
start/end.Coinbase returns up to 100 recent trades (cursor-based, no deep history).
- save(form='parquet', by_period='Y')¶
Save
dfto disk viaDataStore.Data is always written as Parquet, grouped annually. The form and by_period parameters are accepted for backward compatibility but ignored — storage format and period granularity are managed by
DataStore.- Parameters:
- formstr, optional
Ignored. Kept for backward-compatibility.
- by_periodstr, optional
Ignored. Kept for backward-compatibility.
- save_orderbook(form='parquet')¶
Save
orderbook_dfviaDataStore.The snapshot is timestamped with the current UTC time and written into the daily orderbook file. The form parameter is accepted for backward compatibility but ignored.
- Parameters:
- formstr, optional
Ignored. Kept for backward-compatibility.
- Returns:
- ImportDataCryptoCurrencies
Returns
selfto allow method chaining.
- save_trades(form='parquet', by_period='D')¶
Save
trades_dfviaDataStore.Trades are grouped by calendar day and written as Parquet. The form and by_period parameters are accepted for backward compatibility but ignored.
- Parameters:
- formstr, optional
Ignored. Kept for backward-compatibility.
- by_periodstr, optional
Ignored. Kept for backward-compatibility.
- Returns:
- ImportDataCryptoCurrencies
Returns
selfto allow method chaining.
FromBybit downloads OHLCV candles,
recent trades, and order book snapshots from the Bybit v5 public REST API.
No authentication is required.
Exchange specifics¶
Pair format |
Concatenation without separator: |
Candles per request |
1 000 (endpoint: |
Minimum span |
60 seconds (1 minute). |
Trade history |
Recent trades only — up to the last 1 000 trades. The Bybit public API does not support deep historical pagination. |
Order book depth |
Snapshot at 1–200 levels per side (spot category). |
Authentication |
Not required for public data. |
Quick example¶
from dccd.histo_dl import FromBybit
obj = FromBybit('/data/crypto/', 'BTC', span=3600, fiat='USDT')
# Full OHLCV history (pagination supported)
obj.import_data(start='2024-01-01 00:00:00', end='2024-12-31 00:00:00')
obj.save(form='parquet')
# Only recent trades are available (≤ 1 000)
obj.import_trades(start='last', end='now')
obj.save_trades(form='parquet')