use crate::constant::{Exchange, Interval};
use crate::time::DtNs;
#[derive(Debug, Clone, PartialEq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct BarData {
pub gateway_name: String,
pub symbol: String,
pub exchange: Exchange,
pub datetime: DtNs,
pub interval: Option<Interval>,
pub volume: f64,
pub turnover: f64,
pub open_interest: f64,
pub open_price: f64,
pub high_price: f64,
pub low_price: f64,
pub close_price: f64,
pub pct_change: f64,
}
impl BarData {
pub fn en_symbol(&self) -> String {
let mut buf = String::with_capacity(self.exchange.as_str().len() + 1 + self.symbol.len());
self.en_symbol_into(&mut buf);
buf
}
pub fn en_symbol_into(&self, buf: &mut String) {
crate::symbol::write_vt_symbol(buf, &self.symbol, self.exchange);
}
}