#![allow(missing_docs)]
#![allow(non_camel_case_types)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ExchangeSegment {
IDX_I,
NSE_EQ,
NSE_FNO,
NSE_CURRENCY,
BSE_EQ,
MCX_COMM,
NSE_COMM,
BSE_CURRENCY,
BSE_FNO,
}
impl ExchangeSegment {
pub fn segment_code(self) -> Option<u8> {
match self {
Self::IDX_I => Some(0),
Self::NSE_EQ => Some(1),
Self::NSE_FNO => Some(2),
Self::NSE_CURRENCY => Some(3),
Self::BSE_EQ => Some(4),
Self::MCX_COMM => Some(5),
Self::NSE_COMM => None,
Self::BSE_CURRENCY => Some(7),
Self::BSE_FNO => Some(8),
}
}
pub fn from_segment_code(code: u8) -> Option<Self> {
match code {
0 => Some(Self::IDX_I),
1 => Some(Self::NSE_EQ),
2 => Some(Self::NSE_FNO),
3 => Some(Self::NSE_CURRENCY),
4 => Some(Self::BSE_EQ),
5 => Some(Self::MCX_COMM),
7 => Some(Self::BSE_CURRENCY),
8 => Some(Self::BSE_FNO),
_ => None,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum TransactionType {
BUY,
SELL,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ProductType {
CNC,
INTRADAY,
MARGIN,
MTF,
CO,
BO,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum OrderType {
LIMIT,
MARKET,
STOP_LOSS,
STOP_LOSS_MARKET,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum OrderStatus {
TRANSIT,
PENDING,
CLOSED,
TRIGGERED,
REJECTED,
CANCELLED,
PART_TRADED,
TRADED,
EXPIRED,
CONFIRM,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Validity {
DAY,
IOC,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum LegName {
ENTRY_LEG,
TARGET_LEG,
STOP_LOSS_LEG,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum PositionType {
LONG,
SHORT,
CLOSED,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum OptionType {
CALL,
PUT,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum AmoTime {
PRE_OPEN,
OPEN,
OPEN_30,
OPEN_60,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Instrument {
INDEX,
FUTIDX,
OPTIDX,
EQUITY,
FUTSTK,
OPTSTK,
FUTCOM,
OPTFUT,
FUTCUR,
OPTCUR,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[repr(u8)]
pub enum ExpiryCode {
Near = 0,
Next = 1,
Far = 2,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum OrderFlag {
SINGLE,
OCO,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum KillSwitchStatus {
ACTIVATE,
DEACTIVATE,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum IpFlag {
PRIMARY,
SECONDARY,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[repr(u8)]
pub enum FeedRequestCode {
Connect = 11,
Disconnect = 12,
SubscribeTicker = 15,
UnsubscribeTicker = 16,
SubscribeQuote = 17,
UnsubscribeQuote = 18,
SubscribeFull = 21,
UnsubscribeFull = 22,
SubscribeFullMarketDepth = 23,
UnsubscribeFullMarketDepth = 24,
}
impl Serialize for FeedRequestCode {
fn serialize<S: serde::Serializer>(
&self,
serializer: S,
) -> std::result::Result<S::Ok, S::Error> {
serializer.serialize_u8(*self as u8)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[repr(u8)]
pub enum FeedResponseCode {
Index = 1,
Ticker = 2,
Quote = 4,
OI = 5,
PrevClose = 6,
MarketStatus = 7,
Full = 8,
Disconnect = 50,
}
impl FeedResponseCode {
pub fn from_byte(b: u8) -> Option<Self> {
match b {
1 => Some(Self::Index),
2 => Some(Self::Ticker),
4 => Some(Self::Quote),
5 => Some(Self::OI),
6 => Some(Self::PrevClose),
7 => Some(Self::MarketStatus),
8 => Some(Self::Full),
50 => Some(Self::Disconnect),
_ => None,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum ComparisonType {
TECHNICAL_WITH_VALUE,
TECHNICAL_WITH_INDICATOR,
TECHNICAL_WITH_CLOSE,
LIVE_SCAN_ALERT,
PRICE_WITH_VALUE,
PRICE_WITH_PERCENT_CHANGE,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum IndicatorName {
SMA_5,
SMA_10,
SMA_20,
SMA_50,
SMA_100,
SMA_200,
EMA_5,
EMA_10,
EMA_20,
EMA_50,
EMA_100,
EMA_200,
BB_UPPER,
BB_LOWER,
RSI_14,
ATR_14,
STOCHASTIC,
STOCHRSI_14,
MACD_26,
MACD_12,
MACD_HIST,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Operator {
CROSSING_UP,
CROSSING_DOWN,
CROSSING_ANY_SIDE,
GREATER_THAN,
LESS_THAN,
GREATER_THAN_EQUAL,
LESS_THAN_EQUAL,
EQUAL,
NOT_EQUAL,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum AlertStatus {
ACTIVE,
TRIGGERED,
EXPIRED,
CANCELLED,
}