trade_transaction/
trade-transaction.rs1use xapi;
2use xapi::{RequestStatus, TradeCmd, TradeType, Transaction};
3
4use std::error::Error;
5use std::fs;
6
7#[tokio::main]
8async fn main() -> Result<(), Box<dyn Error>> {
9 let json = fs::read_to_string("credentials.json")?;
10 let credentials = xapi::Credentials::from(&json)?;
11
12 let x = xapi::connect(&credentials).await?;
13
14 let response = x
15 .socket
16 .trade_transaction(Transaction {
17 symbol: String::from("BITCOIN"),
18 cmd: TradeCmd::BuyLimit,
19 type_: TradeType::Open,
20 price: 10.00,
21 volume: 1.0,
22 ..Default::default()
23 })
24 .await?;
25
26 if response.status != true {
27 println!("Failed to trade a transaction {:?}", response);
28 return Ok(());
29 }
30
31 let order = response.return_data.order;
32 let response = x.socket.trade_transaction_status(order).await?;
33 if response.status != true {
34 println!("Failed to trade a transaction {:?}", response);
35 return Ok(());
36 }
37
38 let status = response.return_data;
39 match status.request_status {
40 RequestStatus::Error => {
41 println!("The transaction finished with error {:?}", status.message)
42 }
43 RequestStatus::Pending => {
44 println!("The transaction is pending")
45 }
46 RequestStatus::Accepted => {
47 println!("The transaction has been executed successfully")
48 }
49 RequestStatus::Rejected => {
50 println!("The transaction has been rejected {:?}", status.message)
51 }
52 RequestStatus::Invalid => {
53 println!("Invalid transaction status {:?}", status.message)
54 }
55 };
56
57 Ok(())
58}