Skip to main content

finance_query/models/chart/
meta.rs

1use crate::Provider;
2/// Chart Metadata module
3///
4/// Contains metadata about chart data including symbol, exchange, timezone, and price information.
5use serde::{Deserialize, Serialize};
6
7/// Metadata for chart data
8///
9/// Note: This struct cannot be manually constructed - obtain via `Ticker::chart()`.
10#[non_exhaustive]
11#[derive(Debug, Clone, Default, Serialize, Deserialize)]
12#[cfg_attr(feature = "dataframe", derive(crate::ToDataFrame))]
13#[serde(rename_all = "camelCase")]
14pub struct ChartMeta {
15    /// Stock symbol
16    pub symbol: String,
17    /// Currency
18    pub currency: Option<String>,
19    /// Exchange name
20    pub exchange_name: Option<String>,
21    /// Full exchange name
22    pub full_exchange_name: Option<String>,
23    /// Instrument type
24    pub instrument_type: Option<String>,
25    /// First trade date (Unix timestamp)
26    pub first_trade_date: Option<i64>,
27    /// Regular market time (Unix timestamp)
28    pub regular_market_time: Option<i64>,
29    /// Has pre/post market data
30    pub has_pre_post_market_data: Option<bool>,
31    /// GMT offset
32    pub gmt_offset: Option<i64>,
33    /// Timezone
34    pub timezone: Option<String>,
35    /// Exchange timezone name
36    pub exchange_timezone_name: Option<String>,
37    /// Regular market price
38    pub regular_market_price: Option<f64>,
39    /// Fifty two week high
40    pub fifty_two_week_high: Option<f64>,
41    /// Fifty two week low
42    pub fifty_two_week_low: Option<f64>,
43    /// Regular market day high
44    pub regular_market_day_high: Option<f64>,
45    /// Regular market day low
46    pub regular_market_day_low: Option<f64>,
47    /// Regular market volume
48    pub regular_market_volume: Option<i64>,
49    /// Chart previous close
50    pub chart_previous_close: Option<f64>,
51    /// Previous close
52    pub previous_close: Option<f64>,
53    /// Price hint (decimal places)
54    pub price_hint: Option<i32>,
55    /// Data granularity
56    pub data_granularity: Option<String>,
57    /// Range
58    pub range: Option<String>,
59
60    /// Which data provider served this data (e.g., "yahoo", "polygon").
61    #[serde(skip_serializing_if = "Option::is_none", default)]
62    pub provider_id: Option<Provider>,
63}