|
|
@@ -444,15 +444,15 @@ impl Predictor {
|
|
|
|
|
|
let is_open_long = self.ref_price > self.mid_price;
|
|
|
let is_open_short = self.ref_price < self.mid_price;
|
|
|
- let is_close_long = self.ref_price < self.mid_price;
|
|
|
- let is_close_short = self.ref_price > self.mid_price;
|
|
|
+ let is_close_long = self.inventory > Decimal::ZERO && (self.ref_price < self.mid_price || self.pos_avg_price < self.mid_price);
|
|
|
+ let is_close_short = self.inventory < Decimal::ZERO && (self.ref_price > self.mid_price || self.pos_avg_price > self.mid_price);
|
|
|
|
|
|
self.bid_delta = Decimal::NEGATIVE_ONE;
|
|
|
self.ask_delta = Decimal::NEGATIVE_ONE;
|
|
|
|
|
|
- if self.inventory > Decimal::ZERO && is_close_long {
|
|
|
+ if is_close_long {
|
|
|
self.ask_delta = self.mid_price * self.params.close;
|
|
|
- } else if self.inventory < Decimal::ZERO && is_close_short {
|
|
|
+ } else if is_close_short {
|
|
|
self.bid_delta = self.mid_price * self.params.close;
|
|
|
} else if is_open_long {
|
|
|
self.bid_delta = self.mid_price * self.params.open;
|