exc_binance/types/
trading.rs

1use exc_core::{types, ExchangeError};
2use serde::{Deserialize, Serialize};
3
4/// Order side.
5#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
6#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
7pub enum OrderSide {
8    /// Buy.
9    Buy,
10    /// Sell.
11    Sell,
12}
13
14/// Position side.
15#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
16#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
17pub enum PositionSide {
18    /// Long.
19    Long,
20    /// Short.
21    Short,
22    /// Both.
23    Both,
24}
25
26/// Time-in-force.
27#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
28#[serde(rename_all = "UPPERCASE")]
29pub enum TimeInForce {
30    /// Good-Till-Cancel.
31    Gtc,
32    /// Immdiate-Or-Cancel.
33    Ioc,
34    /// Fill-Or-Kill.
35    Fok,
36    /// Good-Till-Cancel (Post-Only)
37    Gtx,
38}
39
40/// Status.
41#[derive(Debug, Clone, Copy, Deserialize)]
42#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
43pub enum Status {
44    /// New.
45    #[serde(alias = "ACCEPTED")]
46    New,
47    /// Parttially filled.
48    PartiallyFilled,
49    /// Filled.
50    Filled,
51    /// Cancelled.
52    #[serde(alias = "REJECTED", alias = "CANCELLED")]
53    Canceled,
54    /// Expired.
55    Expired,
56    /// New insurance.
57    NewInsurance,
58    /// New ADL.
59    NewAdl,
60}
61
62impl TryFrom<Status> for types::OrderStatus {
63    type Error = ExchangeError;
64
65    fn try_from(status: Status) -> Result<Self, Self::Error> {
66        let status = match status {
67            Status::New | Status::PartiallyFilled => types::OrderStatus::Pending,
68            Status::Canceled | Status::Expired | Status::Filled => types::OrderStatus::Finished,
69            Status::NewAdl | Status::NewInsurance => types::OrderStatus::Pending,
70        };
71        Ok(status)
72    }
73}
74
75/// Order type.
76#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
77#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
78pub enum OrderType {
79    /// Market.
80    Market,
81    /// Limit.
82    Limit,
83    /// Stop.
84    Stop,
85    /// Take-Profit.
86    TakeProfit,
87    /// Stop-Market.
88    StopMarket,
89    /// Take-Profit-Market.
90    TakeProfitMarket,
91    /// Trailing-Stop-Market.
92    TrailingStopMarket,
93    /// Limit Maker.
94    LimitMaker,
95}