|
|
@@ -400,8 +400,8 @@ impl Predictor {
|
|
|
// 达到最大持仓时间还未盈利就平仓
|
|
|
|| (now - self.prev_open_time > is_holding_time_over && self.mid_price > self.pos_avg_price)
|
|
|
);
|
|
|
- let is_open_long = self.fair_price > self.mid_price * (Decimal::ONE + self.params.open) && self.trend_rate < dec!(-0.01);
|
|
|
- let is_open_short = self.fair_price < self.mid_price * (Decimal::ONE - self.params.open) && self.trend_rate > dec!(0.01);
|
|
|
+ let is_open_long = self.inventory.is_zero() && self.fair_price > self.mid_price * (Decimal::ONE + self.params.open) && self.trend_rate < dec!(-0.01);
|
|
|
+ let is_open_short = self.inventory.is_zero() && self.fair_price < self.mid_price * (Decimal::ONE - self.params.open) && self.trend_rate > dec!(0.01);
|
|
|
|
|
|
// 使信号有一定持续性
|
|
|
if is_close_long {
|
|
|
@@ -443,20 +443,18 @@ impl Predictor {
|
|
|
|
|
|
self.optimal_bid_price = max(self.mid_price, self.fair_price);
|
|
|
self.optimal_ask_price = Self::DONT_VIEW;
|
|
|
- } else if self.inventory.is_zero() {
|
|
|
- if self.trade_condition == dec!(3) {
|
|
|
- self.bid_delta = dec!(0);
|
|
|
- self.ask_delta = dec!(-2);
|
|
|
-
|
|
|
- self.optimal_bid_price = self.fair_price * dec!(1.001);
|
|
|
- self.optimal_ask_price = Self::DONT_VIEW;
|
|
|
- } else if self.trade_condition == dec!(4) {
|
|
|
- self.ask_delta = dec!(0);
|
|
|
- self.bid_delta = dec!(-2);
|
|
|
-
|
|
|
- self.optimal_ask_price = self.fair_price * dec!(0.999);
|
|
|
- self.optimal_bid_price = Self::DONT_VIEW;
|
|
|
- }
|
|
|
+ } else if self.trade_condition == dec!(3) {
|
|
|
+ self.bid_delta = dec!(0);
|
|
|
+ self.ask_delta = dec!(-2);
|
|
|
+
|
|
|
+ self.optimal_bid_price = self.fair_price * dec!(1.001);
|
|
|
+ self.optimal_ask_price = Self::DONT_VIEW;
|
|
|
+ } else if self.trade_condition == dec!(4) {
|
|
|
+ self.ask_delta = dec!(0);
|
|
|
+ self.bid_delta = dec!(-2);
|
|
|
+
|
|
|
+ self.optimal_ask_price = self.fair_price * dec!(0.999);
|
|
|
+ self.optimal_bid_price = Self::DONT_VIEW;
|
|
|
}
|
|
|
|
|
|
// 价格处理
|