|
|
@@ -259,8 +259,8 @@ impl Predictor {
|
|
|
self.trade_short_vec.push_back(trade.clone());
|
|
|
self.trade_fixed_vec.push(trade.clone());
|
|
|
|
|
|
- if self.trade_long_vec.len() > 100 {
|
|
|
- let (bought_sum, sold_sum): (Decimal, Decimal) = self.trade_long_vec.deque.iter()
|
|
|
+ if self.trade_fixed_vec.len() > 100 {
|
|
|
+ let (bought_sum, sold_sum): (Decimal, Decimal) = self.trade_fixed_vec.iter()
|
|
|
.fold((Decimal::ZERO, Decimal::ZERO), |(buy_sum, sell_sum), item| {
|
|
|
if item.size > Decimal::ZERO {
|
|
|
(buy_sum + item.value.abs(), sell_sum)
|
|
|
@@ -457,8 +457,8 @@ impl Predictor {
|
|
|
let is_open_long = self.mid_price_trend_rate < Decimal::ZERO && self.force_order_value < -self.params.open && self.inventory.is_zero();
|
|
|
let is_open_short = self.mid_price_trend_rate > Decimal::ZERO && self.force_order_value > self.params.open && self.inventory.is_zero();
|
|
|
// 对称平仓,方差会非常大
|
|
|
- let is_close_long = self.inventory > Decimal::ZERO && self.mid_price_trend_rate > Decimal::ZERO && self.force_order_value > self.params.open;
|
|
|
- let is_close_short = self.inventory < Decimal::ZERO && self.mid_price_trend_rate < Decimal::ZERO && self.force_order_value < -self.params.open;
|
|
|
+ let is_close_long = self.inventory > Decimal::ZERO && self.mid_price_trend_rate > Decimal::ZERO && self.force_order_value > Decimal::ZERO;
|
|
|
+ let is_close_short = self.inventory < Decimal::ZERO && self.mid_price_trend_rate < Decimal::ZERO && self.force_order_value < Decimal::ZERO;
|
|
|
// // 穿越平仓
|
|
|
// let is_close_long = self.inventory > Decimal::ZERO && self.mid_price_trend_rate > Decimal::ZERO;
|
|
|
// let is_close_short = self.inventory < Decimal::ZERO && self.mid_price_trend_rate < Decimal::ZERO;
|
|
|
@@ -579,11 +579,17 @@ impl Predictor {
|
|
|
|
|
|
let inventory = self.inventory;
|
|
|
|
|
|
- let sigma_square = self.trades_volume_short;
|
|
|
+ let sigma_square = self.money_flow;
|
|
|
// let sigma_square = self.error_rate;
|
|
|
|
|
|
let gamma = self.force_order_value;
|
|
|
- let kappa = Decimal::ZERO;
|
|
|
+ let kappa = if self.force_order_value > Decimal::ONE {
|
|
|
+ self.force_order_value.ln()
|
|
|
+ } else if self.force_order_value < Decimal::NEGATIVE_ONE {
|
|
|
+ -self.force_order_value.abs().ln()
|
|
|
+ } else {
|
|
|
+ Decimal::ZERO
|
|
|
+ };
|
|
|
|
|
|
let flow_ratio = Decimal::ZERO;
|
|
|
|