Browse Source

一些细节测试,以及server模拟。

skyfffire 2 years ago
parent
commit
7b08e6ac24
4 changed files with 51 additions and 15 deletions
  1. 3 0
      Cargo.toml
  2. 7 13
      src/main.rs
  3. 39 0
      src/server.rs
  4. 2 2
      tests/order_command_test.rs

+ 3 - 0
Cargo.toml

@@ -13,6 +13,9 @@ global = { path="./global" }
 tokio = { version = "1.31.0", features = ["full"] }
 tracing = "0.1"
 tracing-subscriber = "0.3.17"
+serde = { version = "1.0.188", features = ["derive"] }
+actix-rt = "2.5.0"
+actix-web = "4.0.0-beta.12"
 
 [workspace]
 members=[

+ 7 - 13
src/main.rs

@@ -1,20 +1,11 @@
+mod server;
+
 use std::collections::BTreeMap;
 use std::str::FromStr;
 use tracing::{info, subscriber};
 use strategy::params::Params;
 use strategy::quant::Quant;
 
-// fn get_log(log_level: String) -> tracing::Level {
-//     return match log_level.as_str() {
-//         "trace" => { tracing::Level::TRACE },
-//         "debug" => { tracing::Level::DEBUG },
-//         "info" => { tracing::Level::INFO },
-//         "warn" => { tracing::Level::WARN },
-//         "error" => { tracing::Level::ERROR },
-//         _ => { tracing::Level::TRACE }
-//     }
-// }
-
 #[tokio::main]
 async fn main() {
     // 获取本地配置
@@ -31,8 +22,11 @@ async fn main() {
     info!(?params);
     info!(?tracing_log_level);
 
-    let mut quant = Quant::new(params);
-    let exchange_params:BTreeMap<String, String> = BTreeMap::new();
+    let mut quant = Quant::new(params.clone());
+
+    let mut exchange_params:BTreeMap<String, String> = BTreeMap::new();
+    exchange_params.insert("access_key".to_string(), params.access_key.clone());
+    exchange_params.insert("secret_key".to_string(), params.secret_key.clone());
 
     quant.before_trade(exchange_params).await;
 }

+ 39 - 0
src/server.rs

@@ -0,0 +1,39 @@
+use std::sync::Arc;
+use serde::Deserialize;
+use strategy::quant::Quant;
+use actix_web::{web, App, HttpResponse, HttpServer, Responder, post, get};
+use actix_web::dev::Server;
+use tokio::sync::Mutex;
+use tracing::debug;
+
+#[derive(Deserialize)]
+struct InputData {
+    stop: bool,
+}
+
+// 句柄 GET 请求
+#[get("/")]
+async fn get_handler(quant_arc: web::Data<Arc<Mutex<Quant>>>) -> impl Responder {
+    let quant = quant_arc.lock().await;
+    HttpResponse::Ok().body(format!("Value: {}", quant.params.log_level))
+}
+
+// 句柄 POST 请求
+#[post("/")]
+async fn post_handler(quant_arc: web::Data<Arc<Mutex<Quant>>>, input: web::Json<InputData>) -> impl Responder {
+    let mut quant = quant_arc.lock().await;
+    debug!(?input);
+
+    HttpResponse::Ok().body(format!("Incremented Value: {}", quant.params.log_level))
+}
+
+pub fn run_server(port: u32, quant_arc: Arc<Mutex<Quant>>) -> Server {
+    return HttpServer::new(move || {
+        App::new()
+            .app_data(web::Data::new(quant_arc.clone()))
+            .service(get_handler)
+            .service(post_handler)
+    })
+    .bind(format!("127.0.0.1:{}", port))?
+    .run();
+}

+ 2 - 2
tests/order_command_test.rs

@@ -33,8 +33,8 @@ async fn main() {
             // 下单
             info!("下单");
             let mut command = OrderCommand::new();
-            command.limits_open.insert("BTC_USDT1".to_string(), vec!["0.001".to_string(), "kd".to_string(), "25000".to_string(), client_id_0.clone()]);
-            command.limits_open.insert("BTC_USDT2".to_string(), vec!["0.001".to_string(), "kk".to_string(), "28000".to_string(), client_id_1.clone()]);
+            command.limits_open.insert("BTC_USDT1".to_string(), vec!["0.0001".to_string(), "pd".to_string(), "28000".to_string(), client_id_0.clone()]);
+            command.limits_open.insert("BTC_USDT2".to_string(), vec!["0.0001".to_string(), "pk".to_string(), "25000".to_string(), client_id_1.clone()]);
             exchange.command_order(command.clone(), order_sender.clone(), error_sender.clone()).await;
             tokio::time::sleep(Duration::from_secs(5)).await;