#market-data #trading #cryptocurrency #data-stream #api-client #websocket #tardis

tardis-rs

A rust crate that allows you to easily replay historical market data and stream live market data through Tardis.dev's API

5 releases

0.1.4 Nov 1, 2023
0.1.3 Oct 22, 2023
0.1.2 Sep 23, 2023
0.1.1 Sep 22, 2023
0.1.0 Sep 22, 2023

#23 in #market-data

LGPL-3.0-only

42KB
662 lines

Tardis-rs

API Clients (REST, WebSocket) for Tardis.dev.

tardis-rs allows you to easily replay historical market data and stream live market data through Tardis.dev's API.

[!WARNING]
NOTE: The feature machine must be enabled in order to interact with Tardis Machine Server.

Table of contents

Quickstart

Cargo.toml

[package]
name = "example"
version = "0.1.0"
edition = "2021"

[dependencies]
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
tardis-rs = { version = "0.1", features = ["machine"] }

main.rs

use tardis_rs::{Exchange, machine::{Client, Message}};
use chrono::NaiveDate;

#[tokio::main]
async function main() {
    let client = Client::new(std::env::var("TARDIS_MACHINE_WS_URL").unwrap());

    let stream = client
    .replay_normalized(vec![ReplayNormalizedRequestOptions {
        exchange: Exchange::Bybit,
        symbols: Some(vec!["BTCUSDT".to_string()]),
        from: NaiveDate::from_ymd_opt(2022, 10, 1).unwrap(),
        to: NaiveDate::from_ymd_opt(2022, 10, 2).unwrap(),
        data_types: vec!["trade_bar_60m".to_string()],
        with_disconnect_messages: None,
    }])
    .await
    .unwrap();

    pin_mut!(stream);

    while let Some(msg) = stream.next().await {
        println!("Received trade bar: {:?}", message);
    }
}

Crate features

To avoid compiling unused dependencies, tardis-rs gates certain features, some of which are disabled by default:

Feature Description
machine Enables the client for Tardis Machine Server.

Dependencies

~7–19MB
~274K SLoC