Skip to main content

rust_okx/api/account/responses/
positions.rs

1use serde::Deserialize;
2
3use super::balances::BalanceDetail;
4
5use crate::model::{InstType, NumberString, PositionSide, TradeMode};
6
7/// An open position.
8#[derive(Debug, Clone, Deserialize)]
9#[serde(rename_all = "camelCase")]
10#[non_exhaustive]
11pub struct Position {
12    /// Instrument type.
13    pub inst_type: InstType,
14    /// Instrument ID.
15    pub inst_id: String,
16    /// Position ID.
17    #[serde(default)]
18    pub pos_id: String,
19    /// Position side.
20    pub pos_side: PositionSide,
21    /// Margin mode.
22    pub mgn_mode: TradeMode,
23    /// Quantity of positions.
24    #[serde(default)]
25    pub pos: NumberString,
26    /// Average open price.
27    #[serde(default)]
28    pub avg_px: NumberString,
29    /// Unrealized profit and loss.
30    #[serde(default)]
31    pub upl: NumberString,
32    /// Leverage.
33    #[serde(default)]
34    pub lever: NumberString,
35    /// Estimated liquidation price.
36    #[serde(default)]
37    pub liq_px: NumberString,
38}
39
40/// Account position-risk snapshot.
41#[derive(Debug, Clone, Deserialize)]
42#[serde(rename_all = "camelCase")]
43#[non_exhaustive]
44pub struct PositionRisk {
45    /// Adjusted/effective equity in USD.
46    #[serde(default)]
47    pub adj_eq: NumberString,
48    /// Balance data included in the risk snapshot.
49    #[serde(default)]
50    pub bal_data: Vec<BalanceDetail>,
51    /// Position data included in the risk snapshot.
52    #[serde(default)]
53    pub pos_data: Vec<Position>,
54    /// Timestamp (Unix milliseconds).
55    #[serde(default)]
56    pub ts: NumberString,
57}
58
59/// Historical position row.
60#[derive(Debug, Clone, Deserialize)]
61#[serde(rename_all = "camelCase")]
62#[non_exhaustive]
63pub struct PositionHistory {
64    /// Instrument type.
65    pub inst_type: InstType,
66    /// Instrument ID.
67    pub inst_id: String,
68    /// Position ID.
69    #[serde(default)]
70    pub pos_id: String,
71    /// Margin mode.
72    pub mgn_mode: TradeMode,
73    /// Close type.
74    #[serde(rename = "type", default)]
75    pub close_type: String,
76    /// Realized PnL.
77    #[serde(default)]
78    pub realized_pnl: NumberString,
79    /// Created time (Unix milliseconds).
80    #[serde(default)]
81    pub c_time: NumberString,
82    /// Updated time (Unix milliseconds).
83    #[serde(default)]
84    pub u_time: NumberString,
85}