1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
use rust_decimal::Decimal;
use serde::{Serialize, Deserialize};
use crate::client::Client;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Position {
pub asset_id: uuid::Uuid,
pub symbol: String,
pub exchange: String,
pub asset_class: String,
pub avg_entry_price: Decimal,
pub qty: String,
pub side: String,
pub market_value: Decimal,
pub cost_basis: Decimal,
pub unrealized_pl: Decimal,
pub unrealized_plpc: Decimal,
pub unrealized_intraday_pl: Decimal,
pub unrealized_intraday_plpc: Decimal,
pub current_price: Decimal,
pub lastday_price: Decimal,
pub change_today: Decimal
}
impl Position {
pub fn get_all(client: &Client) -> Vec<Position> {
let _client = reqwest::blocking::Client::new();
let mut url = client.get_url();
url.push_str("positions");
let result: Vec<Position> = _client.get(&url)
.header("APCA-API-KEY-ID", &client.auth.access_key)
.header("APCA-API-SECRET-KEY", &client.auth.secret_key)
.send()
.unwrap()
.json()
.unwrap();
return result;
}
pub fn get(client: &Client, symbol: String) -> Position {
let _client = reqwest::blocking::Client::new();
let mut url = client.get_url();
url.push_str("positions/");
url.push_str(symbol.to_string().as_ref());
let _result: Position = _client.get(&url)
.header("APCA-API-KEY-ID", &client.auth.access_key)
.header("APCA-API-SECRET-KEY", &client.auth.secret_key)
.send()
.unwrap()
.json()
.unwrap();
return _result;
}
pub fn close_all(client: &Client) {
let _client = reqwest::blocking::Client::new();
let mut url = client.get_url();
url.push_str("positions");
_client.delete(&url)
.header("APCA-API-KEY-ID", &client.auth.access_key)
.header("APCA-API-SECRET-KEY", &client.auth.secret_key)
.send()
.unwrap();
}
pub fn close(client: &Client, symbol: String) {
let _client = reqwest::blocking::Client::new();
let mut url = client.get_url();
url.push_str("positions/");
url.push_str(symbol.to_string().as_ref());
_client.delete(&url)
.header("APCA-API-KEY-ID", &client.auth.access_key)
.header("APCA-API-SECRET-KEY", &client.auth.secret_key)
.send()
.unwrap();
}
}