OKX Continuous Downloader (dccd.continuous_dl.okx)

Objects and functions to download data from OKX exchange (WebSocket).

High level API

get_data_okx(path, pair='BTC-USDT', time_step=60, until=3600, form='csv')[source]

Download order book and trades data from OKX via WebSocket.

Parameters:
pathstr

Root path; trades saved under <path>/trades/, book under <path>/book/.

pairstr, optional

Trading pair in OKX format (e.g. ‘BTC-USDT’), default is ‘BTC-USDT’.

time_stepint, optional

Seconds between snapshots, default is 60.

untilint, optional

Duration in seconds or stop timestamp, default is 3600.

formstr, optional

Save format (‘csv’, ‘parquet’, etc.), default is ‘csv’.

get_orderbook_okx(path, pair='BTC-USDT', time_step=60, until=3600, form='csv')[source]

Download order book data from OKX via WebSocket.

Parameters:
pathstr

Path to save data.

pairstr, optional

Trading pair in OKX format (e.g. ‘BTC-USDT’), default is ‘BTC-USDT’.

time_stepint, optional

Seconds between snapshots, default is 60.

untilint, optional

Duration in seconds or stop timestamp, default is 3600.

formstr, optional

Save format (‘csv’, ‘parquet’, etc.), default is ‘csv’.

get_trades_okx(path, pair='BTC-USDT', time_step=60, until=3600, form='csv')[source]

Download trades data from OKX via WebSocket.

Parameters:
pathstr

Path to save data.

pairstr, optional

Trading pair in OKX format (e.g. ‘BTC-USDT’), default is ‘BTC-USDT’.

time_stepint, optional

Seconds between snapshots, default is 60.

untilint, optional

Duration in seconds or stop timestamp, default is 3600.

formstr, optional

Save format (‘csv’, ‘parquet’, etc.), default is ‘csv’.

Low level API

class DownloadOKXData(pair='BTC-USDT', time_step=60, until=3600, span=None, checkpoint_dir=None)[source]

Bases: ContinuousDownloader

Download data continuously from OKX via WebSocket v5.

Parameters:
pairstr

Trading pair in OKX format (e.g. ‘BTC-USDT’).

time_stepint, optional

Seconds between data snapshots, default is 60.

untilint, optional

Seconds to run or stop timestamp, default is 3600.

spanint, optional

Candle interval in seconds; if given, subscribes to the candle channel in addition to trades and book. Default is None.

Attributes:
hoststr

WebSocket URL.

is_connectbool

True if connected.

tsint

Snapshot interval in seconds.

untilint

Stop timestamp.

Methods

set_process_data(func, **kwargs)

Set processing function.

set_saver(call, **kwargs)

Set saver object to save data or update a database.

__call__(*args, **kwargs)

Start the WebSocket stream and block until it stops.

__call__(*args, **kwargs)

Start the WebSocket stream and block until it stops.

Parameters:
*args, **kwargs

Forwarded to _connect.

Returns:
ContinuousDownloader

The downloader instance (for chaining).

set_process_data(func, **kwargs)

Set processing function.

Parameters:
funccallable

Function to process and clean data before to be saved. Must take data in arguments and can take any optional keywords arguments, cf exemples in dccd.process_data.

**kwargs

Any keyword arguments to be passed to func.

set_saver(call, **kwargs)

Set saver object to save data or update a database.

Parameters:
callcallable

Callable object to save data or update a database. Must take data in arguments and can take any optional keywords arguments, cf exemples in dccd.io_tools.

**kwargs

Any keyword arguments to be passed to call.

DownloadOKXData streams real-time trades and order book data from OKX via WebSocket. No authentication is required.

Exchange specifics

WebSocket URL

wss://ws.okx.com:8443/ws/v5/public

Available channels

Trades (trades) and order book (books / books5).

Pair format

Hyphen-separated instrument ID: 'BTC-USDT' (handled automatically).

Authentication

Not required for public streams.

Quick example

from dccd.continuous_dl import DownloadOKXData, get_data_okx
from dccd.tools.io import IODataBase

# Convenience function
get_data_okx('/data/crypto/', pair='BTC-USDT',
             time_step=60, until=3600, form='parquet')

# Class-based API
dl = DownloadOKXData(pair='BTC-USDT', time_step=60, until=3600)
dl.set_trades_saver(IODataBase('/data/crypto/trades', method='parquet'))
dl.set_book_saver(IODataBase('/data/crypto/book', method='parquet'))
dl.run()