OKX Historical Downloader (dccd.histo_dl.okx)¶
Objects to download historical data from OKX exchange.
- class FromOKX(path, crypto, span, fiat='USDT', form='xlsx', tz='local')[source]¶
Bases:
ImportDataCryptoCurrenciesClass to import crypto-currencies data from the OKX 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 formatted with a hyphen separator (e.g.'BTC'+'USDT'→'BTC-USDT').- 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
Instrument ID (e.g. ‘BTC-USDT’).
- start, endint
Timestamps bounding the download.
- spanint
Seconds between observations.
- full_pathstr
Directory managed by
DataStore—{path}/okx/ohlc/{pair}/{span}/.
Methods
import_data([start, end])Download data from OKX 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,FromBybit
Notes
Uses the OKX 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 OKX 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.
FromOKX downloads OHLCV candles,
trade history, and order book snapshots from the OKX public REST API.
No authentication is required.
Exchange specifics¶
Pair format |
Hyphen separator with instrument ID format:
|
OHLCV endpoint |
Uses |
Candles per request |
|
Minimum span |
60 seconds (1 minute). |
Trade history |
Full historical depth via |
Order book depth |
Snapshot at 1, 5, 400, or 4 000 levels per side. |
Authentication |
Not required for public data. |
Quick example¶
from dccd.histo_dl import FromOKX
obj = FromOKX('/data/crypto/', 'BTC', span=3600, fiat='USDT')
# Full OHLCV history
obj.import_data(start='2024-01-01 00:00:00', end='2024-12-31 00:00:00')
obj.save(form='parquet')
# Trade history (full pagination)
obj.import_trades(start='2024-01-01 00:00:00', end='2024-06-30 00:00:00')
obj.save_trades(form='parquet')