bybit_rust_api/rest/enums/
order_status.rs

1use std::fmt::{Display, Formatter, Result};
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Serialize, Deserialize, PartialEq)]
6pub enum OrderStatus {
7    // https://bybit-exchange.github.io/docs/v5/enum#orderstatus
8
9    // Open status
10    #[serde(rename = "New")]
11    New, // order has been placed successfully
12    #[serde(rename = "PartiallyFilled")]
13    PartiallyFilled,
14    #[serde(rename = "Untriggered")]
15    Untriggered, // Conditional orders are created
16
17    // Closed status
18    #[serde(rename = "PartiallyFilledCanceled")]
19    PartiallyFilledCanceled, // Only spot has this order status
20    #[serde(rename = "Filled")]
21    Filled,
22    #[serde(rename = "Cancelled")]
23    Cancelled, // In derivatives, orders with this status may have an executed qty
24    #[serde(rename = "Triggered")]
25    Triggered, // instantaneous state for conditional orders from Untriggered to New
26    #[serde(rename = "Deactivated")]
27    Deactivated, // UTA: Spot tp/sl order, conditional order, OCO order are cancelled before they are triggered
28}
29
30impl Display for OrderStatus {
31    fn fmt(&self, f: &mut Formatter) -> Result {
32        match self {
33            OrderStatus::New => write!(f, "New"),
34            OrderStatus::PartiallyFilled => write!(f, "PartiallyFilled"),
35            OrderStatus::Untriggered => write!(f, "Untriggered"),
36            OrderStatus::PartiallyFilledCanceled => write!(f, "PartiallyFilledCanceled"),
37            OrderStatus::Filled => write!(f, "Filled"),
38            OrderStatus::Cancelled => write!(f, "Cancelled"),
39            OrderStatus::Triggered => write!(f, "Triggered"),
40            OrderStatus::Deactivated => write!(f, "Deactivated"),
41        }
42    }
43}
44
45impl OrderStatus {
46    pub fn is_open(&self) -> bool {
47        match self {
48            OrderStatus::New => true,
49            OrderStatus::PartiallyFilled => true,
50            OrderStatus::Untriggered => true,
51            OrderStatus::PartiallyFilledCanceled => true,
52            OrderStatus::Filled => false,
53            OrderStatus::Cancelled => false,
54            OrderStatus::Triggered => false,
55            OrderStatus::Deactivated => false,
56        }
57    }
58
59    pub fn is_closed(&self) -> bool {
60        !self.is_open()
61    }
62}