Python client for tardis.dev - historical tick-level cryptocurrency market data replay API. Provides fast, high level and developer friendly wrapper for more low level HTTP API with local file based caching build in.
Requires Python 3.7.0+ installed.
pip install tardis-clientimport asyncio
from tardis_client import TardisClient, Channel
async def replay():
tardis_client = TardisClient()
# replay method returns Async Generator
# https://rickyhan.com/jekyll/update/2018/01/27/python36.html
messages = tardis_client.replay(
exchange="bitmex",
from_date="2019-06-01",
to_date="2019-06-02",
filters=[Channel(name="trade", symbols=["XBTUSD","ETHUSD"]), Channel("orderBookL2", ["XBTUSD"])],
)
# this will print all trades and orderBookL2 messages for XBTUSD
# and all trades for ETHUSD for bitmex exchange
# between 2019-06-01T00:00:00.000Z and 2019-06-02T00:00:00.000Z (whole first day of June 2019)
async for local_timestamp, message in messages:
# local timestamp is a Python datetime that marks timestamp when given message has been received
# message is a message object as provided by exchange real-time stream
print(message)
asyncio.run(replay())tardis-client package provides TardisClient and Channel classes.
from tardis_client import TardisClient, ChannelOptional client constructor parameters.
| name | type | default value | description |
|---|---|---|---|
api_key (optional) |
string |
"" |
optional string containing API key for tardis.dev API. If not provided only first day of each month of data is accessible (free access) |
cache_dir (optional) |
string |
<os.tmpdir>/.tardis-cache |
optional string with path to local dir that will be used as cache location. If not provided default temp dir for given OS will be used. |
Example:
# creates new client instance with access only to sample data (first day of each month)
tardis_client = TardisClient()
# creates new client with access to all data for given API key
tardis_client = TardisClient(api_key="YOUR_API_KEY")
# creates new client with custom cache dir
tardis_client = TardisClient(cache_dir="./cache")-
Removes local file cache dir and it's contents.
Example:
tardis_client = TardisClient() tardis_client.clear_cache()
-
Replays historical market data messages for given replay arguments.
Returns Async Generator with named tuples (
namedtuple("Response", ["local_timestamp", "message"])).-
local_timestampis a Python datetime object specyfying when message has been received from the exchange real-time data feed. -
messageis Python dict with parsed JSON that has exactly the same format as message provided by particular exchange's real-time data feed.name type default value description exchangestring- requested exchange name - Use /exchanges API call to get allowed exchanges ids from_datestring- requested UTC start date of data feed - valid ISO date string, eg: 2019-04-05or2019-05-05T00:00:00to_datestring- requested UTC end date of data feed - valid ISO date string, eg: 2019-04-05or2019-05-05T00:00:00filters(optional)List[Channel][] optional filters of requested data feed. Use /exchanges/:exchange API call to get allowed channel names and symbols for requested exchange Channelclass constructor parameters.name type description namestringUse /exchanges/:exchange API call to get allowed channel names and symbols for requested exchange symbolsList[string]Use /exchanges/:exchange API call to get allowed channel names and symbols for requested exchange Channel(name="trade", symbols=["XBTUSD","ETHUSD"]) Channel("orderBookL2", ["XBTUSD"])
-
tardis-client uses Python logging on DEBUG level for that purpose. In doubt please create issue in this repository with steps how to reproduce the issue.
Check out API docs.
MPL-2.0
