rust_okx/api/account/responses/
positions.rs1use serde::Deserialize;
2
3use super::balances::BalanceDetail;
4
5use crate::model::{InstType, NumberString, PositionSide, TradeMode};
6
7#[derive(Debug, Clone, Deserialize)]
9#[serde(rename_all = "camelCase")]
10#[non_exhaustive]
11pub struct Position {
12 pub inst_type: InstType,
14 pub inst_id: String,
16 #[serde(default)]
18 pub pos_id: String,
19 pub pos_side: PositionSide,
21 pub mgn_mode: TradeMode,
23 #[serde(default)]
25 pub pos: NumberString,
26 #[serde(default)]
28 pub avg_px: NumberString,
29 #[serde(default)]
31 pub upl: NumberString,
32 #[serde(default)]
34 pub lever: NumberString,
35 #[serde(default)]
37 pub liq_px: NumberString,
38}
39
40#[derive(Debug, Clone, Deserialize)]
42#[serde(rename_all = "camelCase")]
43#[non_exhaustive]
44pub struct PositionRisk {
45 #[serde(default)]
47 pub adj_eq: NumberString,
48 #[serde(default)]
50 pub bal_data: Vec<BalanceDetail>,
51 #[serde(default)]
53 pub pos_data: Vec<Position>,
54 #[serde(default)]
56 pub ts: NumberString,
57}
58
59#[derive(Debug, Clone, Deserialize)]
61#[serde(rename_all = "camelCase")]
62#[non_exhaustive]
63pub struct PositionHistory {
64 pub inst_type: InstType,
66 pub inst_id: String,
68 #[serde(default)]
70 pub pos_id: String,
71 pub mgn_mode: TradeMode,
73 #[serde(rename = "type", default)]
75 pub close_type: String,
76 #[serde(default)]
78 pub realized_pnl: NumberString,
79 #[serde(default)]
81 pub c_time: NumberString,
82 #[serde(default)]
84 pub u_time: NumberString,
85}