Преглед изворни кода

注释绘图代码(运行测试版)

JiahengHe пре 10 месеци
родитељ
комит
85ea319de6
2 измењених фајлова са 114 додато и 118 уклоњено
  1. 104 108
      src/strategy.rs
  2. 10 10
      src/utils.rs

+ 104 - 108
src/strategy.rs

@@ -1,18 +1,14 @@
-use futures_channel::mpsc::UnboundedSender;
 use std::cmp::{max, min};
 use std::collections::HashMap;
-use std::collections::VecDeque;
 use std::ops::{Div, Mul};
 use std::str::FromStr;
 use chrono::Utc;
-use futures_util::StreamExt;
 use rust_decimal::Decimal;
 use rust_decimal::prelude::{FromPrimitive, ToPrimitive};
 use tracing::{error, info, warn};
 use tokio::time::Instant;
 use crate::params::Params;
 use crate::model::{LocalPosition, OrderCommand, OrderInfo};
-use crate::utils;
 use crate::utils::{clip, fix_amount, fix_price, generate_client_id, get_limit_order_requests_num_per_second, get_limit_requests_num_per_second};
 
 #[derive(Debug)]
@@ -113,7 +109,7 @@ pub struct Strategy {
 
 
     pub prev_insert_time: Decimal,
-    pub debug_sender: UnboundedSender<Vec<Decimal>>,
+    // pub debug_sender: UnboundedSender<Vec<Decimal>>,
 }
 
 impl Strategy {
@@ -125,44 +121,44 @@ impl Strategy {
 
         // 创建数据通道
         // 创建一个无界通道
-        let (tx, mut rx) = futures_channel::mpsc::unbounded::<Vec<Decimal>>();
-
-        tokio::spawn(async move {
-            let len = 16usize;
-            let mut prev_save_time = Decimal::from(Utc::now().timestamp_millis());
-            let mut debugs: Vec<VecDeque<Option<Decimal>>> = vec![VecDeque::new(); len];
-
-            while let Some(value) = rx.next().await {
-                // 数据填充到对应位置
-                for i in 0..len {
-                    if value[i] == Decimal::from_str("14142135623730951").unwrap() {
-                        debugs[i].push_back(None);
-                    } else {
-                        debugs[i].push_back(Some(value[i]));
-                    }
-                }
-
-                // 长度限制
-                if debugs[0].len() > 500_000 {
-                    for i in 0..len {
-                        debugs[i].pop_front(); // 从前面移除元素
-                    }
-                }
-
-                let now = Decimal::from(Utc::now().timestamp_millis());
-                if now - prev_save_time < Decimal::from_str("60000").unwrap() {
-                    continue;
-                }
-
-                let debugs_clone = debugs.clone();
-                let temp_html_str = tokio::task::spawn_blocking(move || {
-                    utils::build_html_file(&debugs_clone)
-                }).await.unwrap();
-
-                utils::write_to_file(&temp_html_str, "./db/db.html".to_string()).await;
-                prev_save_time = Decimal::from(Utc::now().timestamp_millis());
-            }
-        });
+        // let (tx, mut rx) = futures_channel::mpsc::unbounded::<Vec<Decimal>>();
+        //
+        // tokio::spawn(async move {
+        //     let len = 16usize;
+        //     let mut prev_save_time = Decimal::from(Utc::now().timestamp_millis());
+        //     let mut debugs: Vec<VecDeque<Option<Decimal>>> = vec![VecDeque::new(); len];
+        //
+        //     while let Some(value) = rx.next().await {
+        //         // 数据填充到对应位置
+        //         for i in 0..len {
+        //             if value[i] == Decimal::from_str("14142135623730951").unwrap() {
+        //                 debugs[i].push_back(None);
+        //             } else {
+        //                 debugs[i].push_back(Some(value[i]));
+        //             }
+        //         }
+        //
+        //         // 长度限制
+        //         if debugs[0].len() > 500_000 {
+        //             for i in 0..len {
+        //                 debugs[i].pop_front(); // 从前面移除元素
+        //             }
+        //         }
+        //
+        //         let now = Decimal::from(Utc::now().timestamp_millis());
+        //         if now - prev_save_time < Decimal::from_str("60000").unwrap() {
+        //             continue;
+        //         }
+        //
+        //         let debugs_clone = debugs.clone();
+        //         let temp_html_str = tokio::task::spawn_blocking(move || {
+        //             utils::build_html_file(&debugs_clone)
+        //         }).await.unwrap();
+        //
+        //         utils::write_to_file(&temp_html_str, "./db/db.html".to_string()).await;
+        //         prev_save_time = Decimal::from(Utc::now().timestamp_millis());
+        //     }
+        // });
 
 
         // strategy的初始化,里面已经有一些参数初始化了
@@ -252,7 +248,7 @@ impl Strategy {
             prev_place_order_timestamp: 0,
             min_cancel_interval_mills: 500,
             prev_insert_time: Default::default(),
-            debug_sender: tx,
+            // debug_sender: tx,
         };
 
         // 交易名字
@@ -1319,74 +1315,74 @@ impl Strategy {
             self.prev_place_order_timestamp = Utc::now().timestamp_millis();
         }
         // 数据录入
-        self.processor();
+        // self.processor();
         command
     }
 
 
-    fn processor(&mut self) {
-        self.check_ready();
-        if !self.is_ready {
-            return;
-        }
-
-        // let mut smm = Decimal::ZERO;
-        // if !self.depth_vec[1].time.is_zero() {
-        //     let sma = self.depth_vec[1].asks[0].price;
-        //     let smb = self.depth_vec[1].bids[0].price;
-        //     smm = (sma + smb) / Decimal::TWO;
-        // }
-
-
-        // let cci_arc = self.cci_arc.clone();
-        let now = Decimal::from_i64(Utc::now().timestamp_millis()).unwrap();
-        let mid_price = self.mp;
-        let ask_price = self.ref_ap;
-        let bid_price = self.ref_bp;
-        let last_price = Decimal::ZERO;
-
-        let spread = self.ref_price;
-        let spread_max = self.open_dist[2];
-        let spread_min = self.open_dist[0];
-
-
-        let optimal_ask_price = self.open_dist[2];
-        let optimal_bid_price = self.open_dist[0];
-
-        let inventory = Decimal::ZERO;
-        let sigma_square = Decimal::ZERO;
-        let gamma = Decimal::ZERO;
-        let kappa = Decimal::ZERO;
-
-        let flow_ratio = Decimal::ZERO;
-        let ref_price = self.ref_price;
-
-        let need_append = now - self.prev_insert_time > Decimal::ONE_HUNDRED;
-        if !need_append {
-            return;
-        }
-
-        self.debug_sender.unbounded_send(vec![
-            now,
-            mid_price,
-            ask_price,
-            bid_price,
-            last_price,
-            spread,
-            spread_max,
-            spread_min,
-            optimal_ask_price,
-            optimal_bid_price,
-            inventory,
-            sigma_square,
-            gamma,
-            kappa,
-            flow_ratio,
-            ref_price
-        ]).unwrap();
-
-        self.prev_insert_time = Decimal::from(Utc::now().timestamp_millis())
-    }
+    // fn processor(&mut self) {
+    //     self.check_ready();
+    //     if !self.is_ready {
+    //         return;
+    //     }
+    //
+    //     // let mut smm = Decimal::ZERO;
+    //     // if !self.depth_vec[1].time.is_zero() {
+    //     //     let sma = self.depth_vec[1].asks[0].price;
+    //     //     let smb = self.depth_vec[1].bids[0].price;
+    //     //     smm = (sma + smb) / Decimal::TWO;
+    //     // }
+    //
+    //
+    //     // let cci_arc = self.cci_arc.clone();
+    //     let now = Decimal::from_i64(Utc::now().timestamp_millis()).unwrap();
+    //     let mid_price = self.mp;
+    //     let ask_price = self.ap;
+    //     let bid_price = self.bp;
+    //     let last_price = Decimal::ZERO;
+    //
+    //     let spread = self.ref_price;
+    //     let spread_max = self.open_dist[2];
+    //     let spread_min = self.open_dist[0];
+    //
+    //
+    //     let optimal_ask_price = self.open_dist[2];
+    //     let optimal_bid_price = self.open_dist[0];
+    //
+    //     let inventory = Decimal::ZERO;
+    //     let sigma_square = Decimal::ZERO;
+    //     let gamma = Decimal::ZERO;
+    //     let kappa = Decimal::ZERO;
+    //
+    //     let flow_ratio = Decimal::ZERO;
+    //     let ref_price = self.ref_price;
+    //
+    //     let need_append = now - self.prev_insert_time > Decimal::ONE_HUNDRED;
+    //     if !need_append {
+    //         return;
+    //     }
+    //
+    //     self.debug_sender.unbounded_send(vec![
+    //         now,
+    //         mid_price,
+    //         ask_price,
+    //         bid_price,
+    //         last_price,
+    //         spread,
+    //         spread_max,
+    //         spread_min,
+    //         optimal_ask_price,
+    //         optimal_bid_price,
+    //         inventory,
+    //         sigma_square,
+    //         gamma,
+    //         kappa,
+    //         flow_ratio,
+    //         ref_price
+    //     ]).unwrap();
+    //
+    //     self.prev_insert_time = Decimal::from(Utc::now().timestamp_millis())
+    // }
 }
 
 

+ 10 - 10
src/utils.rs

@@ -122,7 +122,7 @@ pub fn get_limit_order_requests_num_per_second(exchange: String) -> i64 {
     }
 }
 
-pub async fn write_to_file(json_data: &String, file_path: String) {
+pub async fn _write_to_file(json_data: &String, file_path: String) {
     // 尝试创建文件路径
     if let Err(e) = fs::create_dir_all(
         // 获取文件目录路径
@@ -150,7 +150,7 @@ pub async fn write_to_file(json_data: &String, file_path: String) {
     }
 }
 
-pub fn build_html_file(data_c: &Vec<VecDeque<Option<Decimal>>>) -> String {
+pub fn _build_html_file(data_c: &Vec<VecDeque<Option<Decimal>>>) -> String {
     let temp_json_str = serde_json::to_string(&data_c).unwrap();
 
     let str1 = r##"
@@ -370,22 +370,22 @@ pub fn build_html_file(data_c: &Vec<VecDeque<Option<Decimal>>>) -> String {
             name: "ask_price",
             type: "line",
             showSymbol: false,
-            // data: data[2],
-            data: [],
+            data: data[2],
+            // data: [],
           },
           {
             name: "bid_price",
             type: "line",
             showSymbol: false,
-            // data: data[3],
-            data: [],
+            data: data[3],
+            // data: [],
           },
           {
             name: "optimal_ask_price",
             type: "line",
             showSymbol: false,
-            // data: data[8],
-            data: [],
+            data: data[8],
+            // data: [],
             lineStyle: {
               type: "dashed",
             },
@@ -394,8 +394,8 @@ pub fn build_html_file(data_c: &Vec<VecDeque<Option<Decimal>>>) -> String {
             name: "optimal_bid_price",
             type: "line",
             showSymbol: false,
-            // data: data[9],
-            data: [],
+            data: data[9],
+            // data: [],
             lineStyle: {
               type: "dashed",
             },