gate_swap_test.rs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. use std::collections::BTreeMap;
  2. use serde_json::json;
  3. use tracing::{info};
  4. use exchanges::gate_swap_rest::GateSwapRest;
  5. const ACCESS_KEY: &str = "b8c2e46dbab1e07c544c58ed455040ee";
  6. const SECRET_KEY: &str = "20761ad666666a7d70e61d82293e20c738514856e85e618d2fbb90be16549151";
  7. //rest-设置持仓模式
  8. #[tokio::test]
  9. async fn rest_cancel_order_all_test() {
  10. let _guard = global::log_utils::init_log_with_trace();
  11. let mut ret = get_rest();
  12. let req_data = ret.cancel_order_all().await;
  13. println!("okx--设置持仓模式--{:?}", req_data);
  14. }
  15. //rest-下一个自动单
  16. #[tokio::test]
  17. async fn price_order_test() {
  18. let _guard = global::log_utils::init_log_with_info();
  19. let mut rest = get_rest();
  20. let mut params = json!({});
  21. params["initial"] = json!({
  22. "contract": "XRP_USDT",
  23. "price": "0",
  24. "tif": "ioc",
  25. "reduce_only": true,
  26. // [平多:close_long, 平空:close_short]
  27. "auto_size": "close_long"
  28. });
  29. params["trigger"] = json!({
  30. // [平多:close-long-position, 平空:close-short-position]
  31. "order_type": "close-long-position",
  32. // 一般都默认用0
  33. "strategy_type": 0,
  34. // [0 - 最新成交价,1 - 标记价格,2 - 指数价格]
  35. "price_type": 0,
  36. // [1: 引用价格大于等于我们传的价格,2:引用价格小于等于我们传的价格]
  37. // 在止损的情况下:
  38. // 1 可以理解为向上突破触发价(一般是给空单用)
  39. // 2 可以理解为向下突破触发价(一般是给多单用)
  40. "rule": 2,
  41. // 订单触发价格
  42. "price": "0.5600",
  43. });
  44. let response_data = rest.place_price_order("usdt".to_string(), params).await;
  45. if response_data.code == 200 {
  46. // let response_obj: serde_json::Value = serde_json::from_str(response_data.data.as_str()).unwrap();
  47. //
  48. // info!("resp={:?}", response_obj.as_object().unwrap());
  49. } else {
  50. // error!(?response_data);
  51. }
  52. }
  53. #[tokio::test]
  54. async fn price_order_cancel_test() {
  55. let _guard = global::log_utils::init_log_with_info();
  56. let mut rest = get_rest();
  57. // 这边取消订单只能使用系统返回的
  58. let rst = rest.cancel_price_order("usdt".to_string(), "58002898".to_string()).await;
  59. info!(?rst);
  60. }
  61. //rest-查询合约账户变更历史
  62. #[tokio::test]
  63. async fn rest_account_book_test() {
  64. let _guard = global::log_utils::init_log_with_trace();
  65. let mut ret = get_rest();
  66. let req_data = ret.account_book("usdt".to_string()).await;
  67. println!("okx--查询合约账户变更历史--{:?}", req_data);
  68. }
  69. //rest-查询子账户列表
  70. #[tokio::test]
  71. async fn rest_sub_accounnt() {
  72. let _guard = global::log_utils::init_log_with_info();
  73. let mut ret = get_rest();
  74. let response = ret.sub_account().await;
  75. info!("{}", response.data.to_string())
  76. // let value = json!([
  77. // {
  78. // "remark": "account1",
  79. // "login_name": "sub_account_for_trades",
  80. // "user_id": 10001,
  81. // "state": 1,
  82. // "create_time": 168888888
  83. // },
  84. // {
  85. // "remark": "account2",
  86. // "login_name": "sub_account_for_trades",
  87. // "user_id": 10002,
  88. // "state": 1,
  89. // "create_time": 168888888
  90. // }
  91. // ]);
  92. //
  93. // for account in value.as_array().unwrap() {
  94. // let remark = account.get("remark").unwrap().as_str().unwrap();
  95. // let login_name = account.get("login_name").unwrap().as_str().unwrap();
  96. // let user_id = account.get("user_id").unwrap().as_i64().unwrap();
  97. //
  98. // info!("{}, {}, {}", remark, login_name, user_id)
  99. // }
  100. }
  101. // fn get_ws(btree_map: Option<GateSwapLogin>) -> GateSwapWs {
  102. // let binance_ws = GateSwapWs::new(false,
  103. // btree_map,
  104. // GateSwapWsType::PublicAndPrivate("usdt".to_string()));
  105. // binance_ws
  106. // }
  107. fn get_rest() -> GateSwapRest {
  108. let mut btree_map: BTreeMap<String, String> = BTreeMap::new();
  109. btree_map.insert("access_key".to_string(), ACCESS_KEY.to_string());
  110. btree_map.insert("secret_key".to_string(), SECRET_KEY.to_string());
  111. let ba_exc = GateSwapRest::new(false, btree_map);
  112. ba_exc
  113. }