浏览代码

暂时移除深度数据

skyffire 1 年之前
父节点
当前提交
b9ad6bd57d
共有 1 个文件被更改,包括 58 次插入66 次删除
  1. 58 66
      src/msv.rs

+ 58 - 66
src/msv.rs

@@ -5,9 +5,9 @@ use rust_decimal::Decimal;
 use rust_decimal::prelude::{FromPrimitive, ToPrimitive};
 use rust_decimal_macros::dec;
 use serde_json::{json, Value};
-use crate::db_connector::{get_depths_json, get_trades_json};
+use crate::db_connector::{get_trades_json};
 use crate::params_utils::{get_str, parse_str_to_decimal};
-use crate::server::{Response, SimpleDepth, Trade};
+use crate::server::{Response, Trade};
 
 pub fn symbol_fix(symbol: &str) -> String {
     let mut fixed = symbol.to_uppercase();
@@ -64,21 +64,13 @@ pub async fn generate_msv(query_value: Value) -> HttpResponse {
         start_time,
         end_time,
     ).await;
-    let depth_response = get_depths_json(
-        exchange.as_str(),
-        symbol.as_str(),
-        start_time,
-        end_time,
-    ).await;
 
     // 对数据库返回的数据进行容错处理
-    if trades_response.code == 200 && depth_response.code == 200{
+    if trades_response.code == 200{
         // 数据本地化处理
         let trades = parse_json_to_trades(trades_response.data);
-        // depth本地化处理
-        let simple_depths = parse_json_to_simple_depths(depth_response.data);
         // 指标生成
-        let indicator = generate_msv_by_trades(trades, simple_depths, mills_back, start_time, end_time);
+        let indicator = generate_msv_by_trades(trades, mills_back, start_time, end_time);
 
         // 返回数据
         let response = Response {
@@ -97,7 +89,7 @@ pub async fn generate_msv(query_value: Value) -> HttpResponse {
 }
 
 // 将trades转换为具体指标
-pub fn generate_msv_by_trades(mut trades: Vec<Trade>, simple_depths: Vec<SimpleDepth>, mills_back: Decimal, start_time: i64, end_time: i64) -> Value {
+pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, start_time: i64, end_time: i64) -> Value {
     let mut msv_data: Vec<Vec<Decimal>> = vec![];
 
     const GAMMA: Decimal = dec!(0.5);
@@ -173,9 +165,9 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, simple_depths: Vec<SimpleD
 
     // 按时间序列填充数据
     let mut final_msv_data: Vec<Vec<Decimal>> = vec![];
-    let mut final_depth_data: Vec<Vec<Decimal>> = vec![];
+    let final_depth_data: Vec<Vec<Decimal>> = vec![];
     let mut data_index = 0;
-    let mut depth_index = 0;
+    // let mut depth_index = 0;
     let mut index_timestamp = Decimal::from_i64(start_time).unwrap();
     let last_timestamp = Decimal::from_i64(end_time).unwrap();
     let step_timestamp = dec!(1000);
@@ -210,22 +202,22 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, simple_depths: Vec<SimpleD
             data_index = data_index + 1;
         }
 
-        // 获取时间范围内的深度数据
-        let mut total_size = Decimal::ZERO;
-        loop {
-            // 下标合法性判断
-            if depth_index >= simple_depths.len() {
-                break;
-            }
-            // 时间范围合法性判断,只统计那一秒以内的深度总交易量
-            if index_timestamp < simple_depths[depth_index].time {
-                break;
-            }
-            // 这一秒的所有深度数据求和
-            total_size += simple_depths[depth_index].size;
-            // 下标步近
-            depth_index += 1;
-        }
+        // // 获取时间范围内的深度数据
+        // let mut total_size = Decimal::ZERO;
+        // loop {
+        //     // 下标合法性判断
+        //     if depth_index >= simple_depths.len() {
+        //         break;
+        //     }
+        //     // 时间范围合法性判断,只统计那一秒以内的深度总交易量
+        //     if index_timestamp < simple_depths[depth_index].time {
+        //         break;
+        //     }
+        //     // 这一秒的所有深度数据求和
+        //     total_size += simple_depths[depth_index].size;
+        //     // 下标步近
+        //     depth_index += 1;
+        // }
 
         // 如果这两个值为0,则代表这mills_back毫秒以内是没有数据的,填充0数据,使得x轴是完整的
         if max_msv_data == Decimal::ZERO {
@@ -236,7 +228,7 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, simple_depths: Vec<SimpleD
             final_msv_data.push(vec![index_timestamp, max_msv_data, max_msv_diss_data]);
         }
         // 简易的深度数据处理
-        final_depth_data.push(vec![index_timestamp, total_size]);
+        // final_depth_data.push(vec![index_timestamp, total_size]);
 
         // ---------------- 最后的时间处理 -----------------
         // 对时间进行步近
@@ -276,37 +268,37 @@ pub fn parse_json_to_trades(trades_json: Value) -> Vec<Trade> {
 }
 
 // 将json转换为简易深度数据
-pub fn parse_json_to_simple_depths(depths_json: Value) -> Vec<SimpleDepth> {
-    let mut rst = vec![];
-
-    for depth_json in depths_json.as_array().unwrap() {
-        let time = Decimal::from_str(depth_json["t"].as_str().unwrap()).unwrap();
-        let mut size = Decimal::ZERO;
-
-        // 卖盘交易量统计
-        for ask_order_book in depth_json["a"].as_array().unwrap() {
-            let price = Decimal::from_str(ask_order_book.as_array().unwrap()[0].as_str().unwrap()).unwrap();
-            let amount = Decimal::from_str(ask_order_book.as_array().unwrap()[1].as_str().unwrap()).unwrap();
-
-            size = size + price * amount;
-        }
-
-        // 买盘交易量统计
-        for bid_order_book in depth_json["b"].as_array().unwrap() {
-            let price = Decimal::from_str(bid_order_book.as_array().unwrap()[0].as_str().unwrap()).unwrap();
-            let amount = Decimal::from_str(bid_order_book.as_array().unwrap()[1].as_str().unwrap()).unwrap();
-
-            size = size + price * amount;
-        }
-
-        size.rescale(2);
-        let simple_depth = SimpleDepth {
-            time,
-            size,
-        };
-
-        rst.insert(0, simple_depth)
-    }
-
-    rst
-}
+// pub fn parse_json_to_simple_depths(depths_json: Value) -> Vec<SimpleDepth> {
+//     let mut rst = vec![];
+//
+//     for depth_json in depths_json.as_array().unwrap() {
+//         let time = Decimal::from_str(depth_json["t"].as_str().unwrap()).unwrap();
+//         let mut size = Decimal::ZERO;
+//
+//         // 卖盘交易量统计
+//         for ask_order_book in depth_json["a"].as_array().unwrap() {
+//             let price = Decimal::from_str(ask_order_book.as_array().unwrap()[0].as_str().unwrap()).unwrap();
+//             let amount = Decimal::from_str(ask_order_book.as_array().unwrap()[1].as_str().unwrap()).unwrap();
+//
+//             size = size + price * amount;
+//         }
+//
+//         // 买盘交易量统计
+//         for bid_order_book in depth_json["b"].as_array().unwrap() {
+//             let price = Decimal::from_str(bid_order_book.as_array().unwrap()[0].as_str().unwrap()).unwrap();
+//             let amount = Decimal::from_str(bid_order_book.as_array().unwrap()[1].as_str().unwrap()).unwrap();
+//
+//             size = size + price * amount;
+//         }
+//
+//         size.rescale(2);
+//         let simple_depth = SimpleDepth {
+//             time,
+//             size,
+//         };
+//
+//         rst.insert(0, simple_depth)
+//     }
+//
+//     rst
+// }