|
|
@@ -101,6 +101,7 @@ pub async fn generate_msv(query_value: Value) -> HttpResponse {
|
|
|
pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, trt_mills_back: Decimal, start_time: i64, end_time: i64) -> Value {
|
|
|
let mut msv_data: Vec<Vec<Decimal>> = vec![];
|
|
|
let mut tr_data: Vec<Vec<Decimal>> = vec![];
|
|
|
+ let mut max_trt_count = Decimal::ZERO;
|
|
|
|
|
|
const GAMMA: Decimal = dec!(0.5);
|
|
|
|
|
|
@@ -174,7 +175,7 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, trt_m
|
|
|
// 生成速率曲线
|
|
|
// 计算区间的预定价格
|
|
|
// let mut trades_count = 0;
|
|
|
- let mut high_rate = Decimal::ZERO;
|
|
|
+ let mut trt_count = Decimal::ZERO;
|
|
|
let mut trt_range_index = index;
|
|
|
loop {
|
|
|
// 第0个就不用计算
|
|
|
@@ -192,12 +193,21 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, trt_m
|
|
|
// 判断是否满足高速率条件
|
|
|
// trades_count += 1;
|
|
|
// if trades_count >= trt {
|
|
|
- high_rate += Decimal::ONE;
|
|
|
+ trt_count += Decimal::ONE;
|
|
|
// }
|
|
|
|
|
|
trt_range_index -= 1;
|
|
|
}
|
|
|
- tr_data.push(vec![trade.time, high_rate]);
|
|
|
+
|
|
|
+ if trt_count > max_trt_count / dec!(0.732) {
|
|
|
+ tr_data.push(vec![trade.time, Decimal::ONE]);
|
|
|
+
|
|
|
+ if trt_count > max_trt_count {
|
|
|
+ max_trt_count = trt_count;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ tr_data.push(vec![trade.time, Decimal::ZERO]);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|