1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
//! Models for cryptocurrency and forex endpoints
use serde::{Deserialize, Serialize};
/// Cryptocurrency information
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CryptoSymbol {
/// Symbol (e.g., "BTCUSD")
pub symbol: String,
/// Currency name
pub name: Option<String>,
/// Currency code
pub currency: Option<String>,
/// Stock exchange
pub stock_exchange: Option<String>,
/// Exchange short name
pub exchange_short_name: Option<String>,
}
/// Cryptocurrency quote
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CryptoQuote {
/// Symbol
pub symbol: String,
/// Name
pub name: Option<String>,
/// Current price
pub price: Option<f64>,
/// Price change
pub change: Option<f64>,
/// Percent change
pub changes_percentage: Option<f64>,
/// Day low
pub day_low: Option<f64>,
/// Day high
pub day_high: Option<f64>,
/// Year low
pub year_low: Option<f64>,
/// Year high
pub year_high: Option<f64>,
/// Market cap
pub market_cap: Option<f64>,
/// Volume
pub volume: Option<f64>,
/// Average volume
pub avg_volume: Option<f64>,
/// Open price
pub open: Option<f64>,
/// Previous close
pub previous_close: Option<f64>,
/// Timestamp
pub timestamp: Option<i64>,
}
/// Historical cryptocurrency price
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CryptoHistorical {
/// Date
pub date: String,
/// Open price
pub open: f64,
/// High price
pub high: f64,
/// Low price
pub low: f64,
/// Close price
pub close: f64,
/// Adjusted close
pub adj_close: Option<f64>,
/// Volume
pub volume: f64,
}
/// Intraday cryptocurrency price
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CryptoIntraday {
/// Date and time
pub date: String,
/// Open price
pub open: f64,
/// High price
pub high: f64,
/// Low price
pub low: f64,
/// Close price
pub close: f64,
/// Volume
pub volume: f64,
}
/// Forex pair information
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ForexPair {
/// Symbol (e.g., "EUR/USD")
pub symbol: String,
/// Name
pub name: Option<String>,
/// Currency
pub currency: Option<String>,
/// Stock exchange
pub stock_exchange: Option<String>,
/// Exchange short name
pub exchange_short_name: Option<String>,
}
/// Forex quote
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ForexQuote {
/// Symbol
pub symbol: String,
/// Name
pub name: Option<String>,
/// Current price/rate
pub price: Option<f64>,
/// Price change
pub change: Option<f64>,
/// Percent change
pub changes_percentage: Option<f64>,
/// Day low
pub day_low: Option<f64>,
/// Day high
pub day_high: Option<f64>,
/// Year low
pub year_low: Option<f64>,
/// Year high
pub year_high: Option<f64>,
/// Open price
pub open: Option<f64>,
/// Previous close
pub previous_close: Option<f64>,
/// Timestamp
pub timestamp: Option<i64>,
}
/// Historical forex rate
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ForexHistorical {
/// Date
pub date: String,
/// Open rate
pub open: f64,
/// High rate
pub high: f64,
/// Low rate
pub low: f64,
/// Close rate
pub close: f64,
/// Adjusted close
pub adj_close: Option<f64>,
}
/// Intraday forex rate
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ForexIntraday {
/// Date and time
pub date: String,
/// Open rate
pub open: f64,
/// High rate
pub high: f64,
/// Low rate
pub low: f64,
/// Close rate
pub close: f64,
}