Skip to main content

ctrader_rs/
symbol.rs

1///
2///
3///
4///
5///
6///
7///
8///
9///
10///
11///
12///
13///
14///
15///
16use crate::payload;
17use crate::proto::common::*;
18use crate::{client::Client, error::Error};
19
20impl Client {
21    /// List all symbols for the given account.
22    ///
23    ///
24    ///
25    ///
26    ///
27    ///
28    ///
29    ///
30    ///
31    ///
32    ///
33    /// Mirrors `ProtoOASymbolsListReq`.
34    pub async fn symbols_list(
35        &self,
36        ctid_trader_account_id: i64,
37        include_archived: bool,
38    ) -> Result<ProtoOaSymbolsListRes, Error> {
39        let req = ProtoOaSymbolsListReq {
40            payload_type: Some(payload::OA_SYMBOLS_LIST_REQ as i32),
41            ctid_trader_account_id,
42            include_archived_symbols: Some(include_archived),
43        };
44        self.command(
45            payload::OA_SYMBOLS_LIST_REQ,
46            req,
47            payload::OA_SYMBOLS_LIST_RES,
48        )
49        .await
50    }
51
52    ///
53    ///
54    ///
55    ///
56    ///
57    ///
58    ///
59    ///
60    ///
61    ///
62    pub async fn subscribe_symbol(
63        &self,
64        symbol_id: Vec<i64>,
65        ctid_trader_account_id: i64,
66    ) -> Result<ProtoOaSubscribeSpotsRes, Error> {
67        let req = ProtoOaSubscribeSpotsReq {
68            symbol_id,
69            subscribe_to_spot_timestamp: Some(true),
70            payload_type: Some(crate::payload::OA_SUBSCRIBE_SPOTS_REQ as i32),
71            ctid_trader_account_id,
72        };
73
74        self.command(
75            crate::payload::OA_SUBSCRIBE_SPOTS_REQ,
76            req,
77            crate::payload::OA_SUBSCRIBE_SPOTS_RES,
78        )
79        .await
80    }
81
82    ///
83    ///
84    ///
85    ///
86    ///
87    ///
88    ///
89    ///
90    ///
91    ///
92    ///
93    ///
94    pub async fn symbol_by_id(
95        &self,
96        symbol_id: Vec<i64>,
97        ctid_trader_account_id: i64,
98    ) -> Result<ProtoOaSymbolByIdReq, Error> {
99        let req = ProtoOaSymbolByIdReq {
100            ctid_trader_account_id,
101            symbol_id,
102            payload_type: Some(crate::payload::OA_SYMBOL_BY_ID_REQ as i32),
103        };
104
105        self.command(
106            crate::payload::OA_SYMBOL_BY_ID_REQ,
107            req,
108            crate::payload::OA_SYMBOL_BY_ID_RES,
109        )
110        .await
111    }
112}
113
114#[cfg(test)]
115mod tests {
116
117    #[tokio::test]
118    async fn test() {}
119}