exc_binance/types/
trading.rs1use exc_core::{types, ExchangeError};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
6#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
7pub enum OrderSide {
8 Buy,
10 Sell,
12}
13
14#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
16#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
17pub enum PositionSide {
18 Long,
20 Short,
22 Both,
24}
25
26#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
28#[serde(rename_all = "UPPERCASE")]
29pub enum TimeInForce {
30 Gtc,
32 Ioc,
34 Fok,
36 Gtx,
38}
39
40#[derive(Debug, Clone, Copy, Deserialize)]
42#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
43pub enum Status {
44 #[serde(alias = "ACCEPTED")]
46 New,
47 PartiallyFilled,
49 Filled,
51 #[serde(alias = "REJECTED", alias = "CANCELLED")]
53 Canceled,
54 Expired,
56 NewInsurance,
58 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#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
77#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
78pub enum OrderType {
79 Market,
81 Limit,
83 Stop,
85 TakeProfit,
87 StopMarket,
89 TakeProfitMarket,
91 TrailingStopMarket,
93 LimitMaker,
95}