kiteticker_async_manager/models/
exchange.rs

1use serde_repr::{Deserialize_repr, Serialize_repr};
2
3#[derive(Debug, Clone, Copy, Default, PartialEq, Serialize_repr, Deserialize_repr)]
4#[repr(u8)]
5///
6/// Exchange options
7///
8pub enum Exchange {
9  #[default]
10  NSE = 1,
11  NFO = 2,
12  CDS = 3,
13  BSE = 4,
14  BFO = 5,
15  BCD = 6,
16  MCX = 7,
17  MCXSX = 8,
18  INDICES = 9,
19}
20
21impl Exchange {
22  pub(crate) fn divisor(&self) -> f64 {
23    match self {
24      Self::CDS => 100_000_0.0,
25      Self::BCD => 100_0.0,
26      _ => 100.0,
27    }
28  }
29
30  pub(crate) fn is_tradable(&self) -> bool {
31    match self {
32      Self::INDICES => false,
33      _ => true,
34    }
35  }
36}
37
38impl From<usize> for Exchange {
39  fn from(value: usize) -> Self {
40    match value {
41      9 => Self::INDICES,
42      8 => Self::MCXSX,
43      7 => Self::MCX,
44      6 => Self::BCD,
45      5 => Self::BFO,
46      4 => Self::BSE,
47      3 => Self::CDS,
48      2 => Self::NFO,
49      1 => Self::NSE,
50      _ => Self::NSE,
51    }
52  }
53}
54
55impl From<String> for Exchange {
56    fn from(value: String) -> Self {
57        match value.as_str() {
58            "NSE" => Self::NSE,
59            "NFO" => Self::NFO,
60            "CDS" => Self::CDS,
61            "BSE" => Self::BSE,
62            "BFO" => Self::BFO,
63            "BCD" => Self::BCD,
64            "MCX" => Self::MCX,
65            "MCXSX" => Self::MCXSX,
66            "INDICES" => Self::INDICES,
67            _ => Self::NSE,
68
69        }
70    }
71}
72
73impl From<Exchange> for String {
74  fn from(value: Exchange) -> Self {
75    match value {
76      Exchange::NSE => "NSE".to_string(),
77      Exchange::NFO => "NFO".to_string(),
78      Exchange::CDS => "CDS".to_string(),
79      Exchange::BSE => "BSE".to_string(),
80      Exchange::BFO => "BFO".to_string(),
81      Exchange::BCD => "BCD".to_string(),
82      Exchange::MCX => "MCX".to_string(),
83      Exchange::MCXSX => "MCXSX".to_string(),
84      Exchange::INDICES => "INDICES".to_string(),
85    }
86  }
87}