|
|
@@ -145,7 +145,8 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
|
|
|
}
|
|
|
|
|
|
// 获取到range毫秒以后的预定价格,计算回去的幅度
|
|
|
- let mut future_ref_price = ref_price;
|
|
|
+ let mut future_ref_price_sum = trade.price;
|
|
|
+ let mut future_ref_count = Decimal::ONE;
|
|
|
let mut future_range_index = index;
|
|
|
loop {
|
|
|
// 下标合法性判断
|
|
|
@@ -160,10 +161,12 @@ pub fn generate_msv_by_trades(mut trades: Vec<Trade>, mills_back: Decimal, simpl
|
|
|
if range_time > mills_back {
|
|
|
break;
|
|
|
}
|
|
|
- future_ref_price = future_ref_price * GAMMA + flag_trade.price * (Decimal::ONE - GAMMA);
|
|
|
+ future_ref_price_sum += flag_trade.price;
|
|
|
|
|
|
future_range_index += 1;
|
|
|
+ future_ref_count += Decimal::ONE;
|
|
|
}
|
|
|
+ let future_ref_price = future_ref_price_sum / future_ref_count;
|
|
|
|
|
|
// 计算过去至多100条数据的sigma值 sigma^2 = (1 / (tn-t0))*sum((S(tk) - S(tk-1)) ^ 2)
|
|
|
let mut sigma_index = index - 1;
|