tradingview/quote/
models.rs1use serde::{Deserialize, Serialize};
2use ustr::Ustr;
3
4#[derive(Debug, Default, Clone, PartialEq, Deserialize, Serialize, Copy)]
9pub struct QuoteData {
10 #[serde(rename(deserialize = "n"))]
11 pub name: Ustr,
12 #[serde(rename(deserialize = "s"))]
13 pub status: Ustr,
14 #[serde(rename(deserialize = "v"))]
15 pub value: QuoteValue,
16}
17
18#[derive(Clone, PartialEq, Deserialize, Serialize, Debug, Default, Copy)]
24pub struct QuoteValue {
25 #[serde(default)]
26 pub ask: Option<f64>,
27 #[serde(default)]
28 pub ask_size: Option<f64>,
29 #[serde(default)]
30 pub bid: Option<f64>,
31 #[serde(default)]
32 pub bid_size: Option<f64>,
33 #[serde(default, rename(deserialize = "ch"))]
34 pub change: Option<f64>,
35 #[serde(default, rename(deserialize = "chp"))]
36 pub change_percent: Option<f64>,
37 #[serde(default, rename(deserialize = "open_price"))]
38 pub open: Option<f64>,
39 #[serde(default, rename(deserialize = "high_price"))]
40 pub high: Option<f64>,
41 #[serde(default, rename(deserialize = "low_price"))]
42 pub low: Option<f64>,
43 #[serde(default, rename(deserialize = "prev_close_price"))]
44 pub prev_close: Option<f64>,
45 #[serde(default, rename(deserialize = "lp"))]
46 pub price: Option<f64>,
47 #[serde(default, rename(deserialize = "lp_time"))]
48 pub timestamp: Option<f64>,
49 #[serde(default)]
50 pub volume: Option<f64>,
51 #[serde(default, rename(deserialize = "currency_id"))]
52 pub currency: Option<Ustr>,
53 #[serde(default, rename(deserialize = "short_name"))]
54 pub symbol: Option<Ustr>,
55 #[serde(default, rename(deserialize = "exchange"))]
56 pub exchange: Option<Ustr>,
57 #[serde(default, rename(deserialize = "type"))]
58 pub market_type: Option<Ustr>,
59}