oanda_v20_openapi/models/
trade.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct Trade {
17 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
19 pub id: Option<i32>,
20 #[serde(rename = "instrument", skip_serializing_if = "Option::is_none")]
21 pub instrument: Option<models::InstrumentName>,
22 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
24 pub price: Option<f64>,
25 #[serde(rename = "openTime", skip_serializing_if = "Option::is_none")]
27 pub open_time: Option<String>,
28 #[serde(rename = "state", skip_serializing_if = "Option::is_none")]
29 pub state: Option<models::TradeState>,
30 #[serde(rename = "initialUnits", skip_serializing_if = "Option::is_none")]
32 pub initial_units: Option<f64>,
33 #[serde(rename = "initialMarginRequired", skip_serializing_if = "Option::is_none")]
35 pub initial_margin_required: Option<f64>,
36 #[serde(rename = "currentUnits", skip_serializing_if = "Option::is_none")]
38 pub current_units: Option<f64>,
39 #[serde(rename = "realizedPL", skip_serializing_if = "Option::is_none")]
41 pub realized_pl: Option<f64>,
42 #[serde(rename = "unrealizedPL", skip_serializing_if = "Option::is_none")]
44 pub unrealized_pl: Option<f64>,
45 #[serde(rename = "marginUsed", skip_serializing_if = "Option::is_none")]
47 pub margin_used: Option<f64>,
48 #[serde(rename = "averageClosePrice", skip_serializing_if = "Option::is_none")]
50 pub average_close_price: Option<f64>,
51 #[serde(rename = "closingTransactionIDs", skip_serializing_if = "Option::is_none")]
53 pub closing_transaction_ids: Option<Vec<i32>>,
54 #[serde(rename = "financing", skip_serializing_if = "Option::is_none")]
56 pub financing: Option<f64>,
57 #[serde(rename = "closeTime", skip_serializing_if = "Option::is_none")]
59 pub close_time: Option<String>,
60 #[serde(rename = "clientExtensions", skip_serializing_if = "Option::is_none")]
61 pub client_extensions: Option<Box<models::ClientExtensions>>,
62 #[serde(rename = "takeProfitOrder", skip_serializing_if = "Option::is_none")]
63 pub take_profit_order: Option<Box<models::TakeProfitOrder>>,
64 #[serde(rename = "stopLossOrder", skip_serializing_if = "Option::is_none")]
65 pub stop_loss_order: Option<Box<models::StopLossOrder>>,
66 #[serde(rename = "trailingStopLossOrder", skip_serializing_if = "Option::is_none")]
67 pub trailing_stop_loss_order: Option<Box<models::TrailingStopLossOrder>>,
68}
69
70impl Trade {
71 pub fn new() -> Trade {
73 Trade {
74 id: None,
75 instrument: None,
76 price: None,
77 open_time: None,
78 state: None,
79 initial_units: None,
80 initial_margin_required: None,
81 current_units: None,
82 realized_pl: None,
83 unrealized_pl: None,
84 margin_used: None,
85 average_close_price: None,
86 closing_transaction_ids: None,
87 financing: None,
88 close_time: None,
89 client_extensions: None,
90 take_profit_order: None,
91 stop_loss_order: None,
92 trailing_stop_loss_order: None,
93 }
94 }
95}
96