use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum OrderFillReason {
#[serde(rename = "LIMIT_ORDER")]
LimitOrder,
#[serde(rename = "STOP_ORDER")]
StopOrder,
#[serde(rename = "MARKET_IF_TOUCHED_ORDER")]
MarketIfTouchedOrder,
#[serde(rename = "TAKE_PROFIT_ORDER")]
TakeProfitOrder,
#[serde(rename = "STOP_LOSS_ORDER")]
StopLossOrder,
#[serde(rename = "TRAILING_STOP_LOSS_ORDER")]
TrailingStopLossOrder,
#[serde(rename = "MARKET_ORDER")]
MarketOrder,
#[serde(rename = "MARKET_ORDER_TRADE_CLOSE")]
MarketOrderTradeClose,
#[serde(rename = "MARKET_ORDER_POSITION_CLOSEOUT")]
MarketOrderPositionCloseout,
#[serde(rename = "MARKET_ORDER_MARGIN_CLOSEOUT")]
MarketOrderMarginCloseout,
#[serde(rename = "MARKET_ORDER_DELAYED_TRADE_CLOSE")]
MarketOrderDelayedTradeClose,
}
impl std::fmt::Display for OrderFillReason {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Self::LimitOrder => write!(f, "LIMIT_ORDER"),
Self::StopOrder => write!(f, "STOP_ORDER"),
Self::MarketIfTouchedOrder => write!(f, "MARKET_IF_TOUCHED_ORDER"),
Self::TakeProfitOrder => write!(f, "TAKE_PROFIT_ORDER"),
Self::StopLossOrder => write!(f, "STOP_LOSS_ORDER"),
Self::TrailingStopLossOrder => write!(f, "TRAILING_STOP_LOSS_ORDER"),
Self::MarketOrder => write!(f, "MARKET_ORDER"),
Self::MarketOrderTradeClose => write!(f, "MARKET_ORDER_TRADE_CLOSE"),
Self::MarketOrderPositionCloseout => write!(f, "MARKET_ORDER_POSITION_CLOSEOUT"),
Self::MarketOrderMarginCloseout => write!(f, "MARKET_ORDER_MARGIN_CLOSEOUT"),
Self::MarketOrderDelayedTradeClose => write!(f, "MARKET_ORDER_DELAYED_TRADE_CLOSE"),
}
}
}
impl Default for OrderFillReason {
fn default() -> OrderFillReason {
Self::LimitOrder
}
}