databento_sandbox/
sandbox.rs1use std::env;
2
3use databento::{
4 LiveClient,
5 dbn::{Dataset::GlbxMdp3, MboMsg, SType, Schema, TradeMsg},
6 live::Subscription,
7};
8use nautilus_core::consts::NAUTILUS_USER_AGENT;
9use time::OffsetDateTime;
10
11#[tokio::main]
12async fn main() {
13 let mut client = LiveClient::builder()
14 .user_agent_extension(NAUTILUS_USER_AGENT.into())
15 .key(env::var("DATABENTO_API_KEY").unwrap())
16 .unwrap()
17 .dataset(GlbxMdp3)
18 .build()
19 .await
20 .unwrap();
21
22 client
23 .subscribe(
24 Subscription::builder()
25 .schema(Schema::Mbo)
26 .stype_in(SType::RawSymbol)
27 .symbols("ESM4")
28 .start(OffsetDateTime::from_unix_timestamp_nanos(0).unwrap())
29 .build(),
30 )
31 .await
32 .unwrap();
33
34 client.start().await.unwrap();
35
36 let mut count = 0;
37
38 while let Some(record) = client.next_record().await.unwrap() {
39 if let Some(msg) = record.get::<TradeMsg>() {
40 println!("{msg:#?}");
41 }
42 if let Some(msg) = record.get::<MboMsg>() {
43 println!(
44 "Received delta: {} {} flags={}",
45 count,
46 msg.hd.ts_event,
47 msg.flags.raw(),
48 );
49 count += 1;
50 }
51 }
52}