Parcourir la source

Merge remote-tracking branch 'origin/master'

875428575@qq.com il y a 2 ans
Parent
commit
22e992ec74
5 fichiers modifiés avec 61 ajouts et 19 suppressions
  1. 8 8
      global/src/log_utils.rs
  2. 3 3
      src/main.rs
  3. 47 5
      strategy/src/attach_.rs
  4. 1 1
      strategy/src/lib.rs
  5. 2 2
      strategy/src/strategy.rs

+ 8 - 8
global/src/log_utils.rs

@@ -1,4 +1,4 @@
-use tracing_subscriber::{EnvFilter, FmtSubscriber};
+use tracing_subscriber::{FmtSubscriber};
 
 pub fn init_log_with_debug() {
     final_init(tracing::Level::DEBUG)
@@ -13,15 +13,15 @@ pub fn init_log_with_info() {
 }
 
 pub fn final_init(level: tracing::Level) {
-    let filter = EnvFilter::from_default_env()
-        .add_directive("exchanges=trace".parse().unwrap())
-        .add_directive("global=trace".parse().unwrap())
-        .add_directive("standard=trace".parse().unwrap())
-        .add_directive("tests=trace".parse().unwrap())
-        .add_directive("strategy=trace".parse().unwrap());
+    // let filter = EnvFilter::from_default_env()
+    //     .add_directive("exchanges=trace".parse().unwrap())
+    //     .add_directive("global=trace".parse().unwrap())
+    //     .add_directive("standard=trace".parse().unwrap())
+    //     .add_directive("tests=trace".parse().unwrap())
+    //     .add_directive("strategy=trace".parse().unwrap());
 
     let subscriber = FmtSubscriber::builder()
-        .with_env_filter(filter)
+        // .with_env_filter(filter)
         .with_max_level(level)
         .with_span_events(tracing_subscriber::fmt::format::FmtSpan::FULL)
         .finish();

+ 3 - 3
src/main.rs

@@ -38,11 +38,11 @@ async fn main() {
     info!("quant初始化……");
     quant_arc.lock().await.before_trade().await;
     let ref_name = quant_arc.lock().await.ref_name[0].clone();
-    // quant::run_refer(quant_arc.clone(), ref_name, params.ref_pair.clone(), exchange_params.clone()).await;
+    quant::run_refer(quant_arc.clone(), ref_name, params.ref_pair.clone(), exchange_params.clone()).await;
 
     exchange_params.clear();
-    exchange_params.insert("access_key".to_string(), "4181c882718a95e72122ac1d52c88533".to_string());
-    exchange_params.insert("secret_key".to_string(), "de82d1507b843ff08d81a0e9b878b721359f274937216b307834b570b676fa3c".to_string());
+    exchange_params.insert("access_key".to_string(), params.access_key);
+    exchange_params.insert("secret_key".to_string(), params.secret_key);
     // 交易交易所
     quant::run_transaction(quant_arc.clone(), trade_name, vec![params.pair], exchange_params.clone()).await;
 

+ 47 - 5
strategy/src/risk.rs → strategy/src/attach_.rs

@@ -1,12 +1,14 @@
 use std::cmp::max;
+use std::sync::Arc;
+use std::time::Duration;
 use chrono::Utc;
 use rust_decimal::Decimal;
 use rust_decimal_macros::dec;
-use tracing::warn;
+use tokio::sync::Mutex;
+use tokio::task::JoinHandle;
+use tracing::{info, warn};
 use crate::quant::Quant;
 
-impl Quant {}
-
 pub fn check_risk(mut _self: Quant) {
     // 参数检查的风控
     if _self.strategy.start_cash == Decimal::ZERO {
@@ -44,8 +46,8 @@ pub fn check_risk(mut _self: Quant) {
         // _self.stop()
     }
     // 报单延迟风控,平均延迟允许上限5000ms
-    // TODO quant.rest不存在
-    // if _self.rest.avg_delay > 5000 {
+    // TODO quant.platform_rest.avg_delay不存在
+    // if _self.platform_rest.avg_delay > 5000 {
     //     let exit_msg = format!("{} 延迟爆表 触发风控 准备停机。", _self.params.account_name);
     //     warn!(exit_msg);
     //     _self.exit_msg = exit_msg;
@@ -169,3 +171,43 @@ pub fn check_risk(mut _self: Quant) {
         // _self.stop()
     }
 }
+
+// 定期触发的系统逻辑
+pub fn on_timer(quant_arc: Arc<Mutex<Quant>>) -> JoinHandle<()> {
+    let quant_arc_clone = quant_arc.clone();
+
+    return tokio::spawn(async move {
+        tokio::time::sleep(Duration::from_secs(20)).await;
+
+        loop {
+            tokio::time::sleep(Duration::from_secs(10)).await;
+
+            let mut quant = quant_arc_clone.lock().await;
+            {
+                // 检查风控
+                // quant.check_risk();
+
+                // 线程停止信号
+                if quant.mode_signal == 1 {
+                    return
+                }
+
+                // 计算预估成交额
+                let total_trade_value = quant.local_buy_value + quant.local_sell_value;
+                let time_diff = Decimal::from(Utc::now().timestamp_millis() - quant.start_time);
+                let trade_vol_24h = ((total_trade_value / time_diff) * dec!(86400));
+                quant.strategy.trade_vol_24h_w = (trade_vol_24h / dec!(10000));
+                quant.strategy.trade_vol_24h_w.rescale(2);
+
+                // 打印各类信息
+                quant.strategy._print_summary();
+                // TODO quant没有rest
+                // info!("Rest报单平均延迟{}ms", quant.rest.avg_delay);
+                // info!("Rest报单最高延迟{}ms", quant.rest.max_delay);
+                for (name, interval) in &quant.market_update_interval {
+                    info!("WS盘口{}行情平均更新间隔{}ms。", name, interval);
+                }
+            }
+        }
+    });
+}

+ 1 - 1
strategy/src/lib.rs

@@ -4,4 +4,4 @@ mod model;
 mod strategy;
 mod predictor;
 mod utils;
-mod risk;
+mod attach_;

+ 2 - 2
strategy/src/strategy.rs

@@ -100,7 +100,7 @@ pub struct Strategy {
     pub predict: Decimal,                                           //
     pub predict_alpha: Decimal,                                     //
     pub post_side: i64,                                             // 交易方向
-    pub trade_vol_24h: Decimal,                                     //
+    pub trade_vol_24h_w: Decimal,                                   // 24小时成交额(单位:万)
     pub grid: Decimal,                                              // 网格数量
 }
 
@@ -190,7 +190,7 @@ impl Strategy {
             predict: Default::default(),
             predict_alpha: Default::default(),
             post_side: 0,
-            trade_vol_24h: Default::default(),
+            trade_vol_24h_w: Default::default(),
             grid: Decimal::from(params.grid),
         };