Skip to main content

alpaca_data/crypto/
model.rs

1use crate::common::time::Timestamp;
2
3#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize)]
4pub struct Bar {
5    pub t: Option<Timestamp>,
6    pub o: Option<rust_decimal::Decimal>,
7    pub h: Option<rust_decimal::Decimal>,
8    pub l: Option<rust_decimal::Decimal>,
9    pub c: Option<rust_decimal::Decimal>,
10    pub v: Option<rust_decimal::Decimal>,
11    pub n: Option<u64>,
12    pub vw: Option<rust_decimal::Decimal>,
13}
14
15#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize)]
16pub struct Quote {
17    pub t: Option<Timestamp>,
18    pub bp: Option<rust_decimal::Decimal>,
19    pub bs: Option<rust_decimal::Decimal>,
20    pub ap: Option<rust_decimal::Decimal>,
21    #[serde(rename = "as")]
22    pub r#as: Option<rust_decimal::Decimal>,
23}
24
25#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize)]
26pub struct Trade {
27    pub t: Option<Timestamp>,
28    pub p: Option<rust_decimal::Decimal>,
29    pub s: Option<rust_decimal::Decimal>,
30    pub i: Option<u64>,
31    pub tks: Option<String>,
32}
33
34#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize)]
35pub struct OrderbookLevel {
36    pub p: Option<rust_decimal::Decimal>,
37    pub s: Option<rust_decimal::Decimal>,
38}
39
40#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize)]
41pub struct Orderbook {
42    pub t: Option<Timestamp>,
43    pub b: Option<Vec<OrderbookLevel>>,
44    pub a: Option<Vec<OrderbookLevel>>,
45}
46
47#[allow(non_snake_case)]
48#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize)]
49pub struct Snapshot {
50    pub latestTrade: Option<Trade>,
51    pub latestQuote: Option<Quote>,
52    pub minuteBar: Option<Bar>,
53    pub dailyBar: Option<Bar>,
54    pub prevDailyBar: Option<Bar>,
55}