phemex_swap_handle.rs 905 B

12345678910111213141516171819202122232425
  1. use std::str::FromStr;
  2. use rust_decimal::Decimal;
  3. use rust_decimal::prelude::FromPrimitive;
  4. use exchanges::response_base::ResponseData;
  5. use crate::{Trade};
  6. pub fn format_trade_items(res_data: &ResponseData) -> Vec<Trade> {
  7. let result = res_data.data["trades_p"].as_array().unwrap();
  8. let mut trades = vec![];
  9. for item in result {
  10. let side = item[1] == "Buy";
  11. let size = Decimal::from_str(item[3].as_str().unwrap()).unwrap();
  12. trades.push(Trade {
  13. id: item[0].to_string(),
  14. time: Decimal::from_i64(item[0].as_i64().unwrap() / 1000 / 1000).unwrap(),
  15. size: if side { size } else { -size },
  16. price: Decimal::from_str(item[2].as_str().unwrap().to_string().as_str()).unwrap(),
  17. symbol: res_data.data["symbol"].as_str().unwrap().replace("USDT", "_USDT").replace("u1000", "1000"),
  18. })
  19. }
  20. return trades;
  21. }