|
|
@@ -300,7 +300,7 @@ impl Predictor {
|
|
|
let previous = Self::calculate_mean_from_iter(previous_iter);
|
|
|
|
|
|
self.volume_decay = if current > previous {
|
|
|
- Decimal::ZERO
|
|
|
+ self.volume_decay * dec!(0.999)
|
|
|
} else {
|
|
|
if self.volume_decay.is_zero() {
|
|
|
(previous - current) / previous
|
|
|
@@ -562,10 +562,14 @@ impl Predictor {
|
|
|
let is_open_long = self.force_order_value < -self.params.open
|
|
|
&& (self.mid_price < self.prev_trade_price * dec!(0.999) || self.prev_trade_price.is_zero())
|
|
|
&& self.inventory < self.params.grid
|
|
|
+ && self.state == 0
|
|
|
+ && self.volume_decay > dec!(0.2)
|
|
|
&& self.bid_delta == dec!(-2);
|
|
|
let is_open_short = self.force_order_value > self.params.open
|
|
|
&& (self.mid_price > self.prev_trade_price * dec!(1.001) || self.prev_trade_price.is_zero())
|
|
|
&& self.inventory > -self.params.grid
|
|
|
+ && self.state == 0
|
|
|
+ && self.volume_decay > dec!(0.2)
|
|
|
&& self.ask_delta == dec!(-2);
|
|
|
|
|
|
if is_open_long {
|