Binance Continuous Downloader (dccd.continuous_dl.binance)

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

High level API

get_data_binance(path, pair='BTCUSDT', time_step=60, until=3600, form='csv')[source]

Download order book and trades data from Binance via WebSocket.

Parameters:
pathstr

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

pairstr, optional

Trading pair in Binance format (e.g. ‘BTCUSDT’), default is ‘BTCUSDT’.

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_binance(path, pair='BTCUSDT', time_step=60, until=3600, form='csv')[source]

Download order book data from Binance via WebSocket.

Parameters:
pathstr

Path to save data.

pairstr, optional

Trading pair in Binance format (e.g. ‘BTCUSDT’), default is ‘BTCUSDT’.

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_binance(path, pair='BTCUSDT', time_step=60, until=3600, form='csv')[source]

Download trades data from Binance via WebSocket.

Parameters:
pathstr

Path to save data.

pairstr, optional

Trading pair in Binance format (e.g. ‘BTCUSDT’), default is ‘BTCUSDT’.

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 DownloadBinanceData(pair='BTCUSDT', time_step=60, until=3600, checkpoint_dir=None)[source]

Bases: ContinuousDownloader

Download data continuously from Binance via combined WebSocket streams.

Parameters:
pairstr

Trading pair symbol in Binance format (e.g. ‘BTCUSDT’).

time_stepint, optional

Seconds between data snapshots, default is 60.

untilint, optional

Seconds to run or stop timestamp, default is 3600.

Attributes:
hoststr

WebSocket URL (combined stream endpoint).

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.

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

Exchange specifics

WebSocket URL

wss://stream.binance.com:9443/stream

Available channels

Trades (<symbol>@aggTrade) and order book diff (<symbol>@depth).

Pair format

Lowercase concatenation: 'btcusdt' (handled automatically).

Authentication

Not required for public streams.

Quick example

from dccd.continuous_dl import DownloadBinanceData, get_data_binance
from dccd.tools.io import IODataBase

# Convenience function (simplest)
get_data_binance('/data/crypto/', pair='BTCUSDT',
                 time_step=60, until=3600, form='parquet')

# Class-based API (full control)
dl = DownloadBinanceData(pair='BTCUSDT', 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()