|
|
@@ -382,22 +382,26 @@ impl Predictor {
|
|
|
let prev_ask_delta = self.ask_delta;
|
|
|
|
|
|
let now = Decimal::from(Utc::now().timestamp_millis());
|
|
|
- let is_holding_time_over = dec!(15) * dec!(60_000);
|
|
|
+ let is_holding_time_over = dec!(2) * dec!(60_000);
|
|
|
|
|
|
let is_close_long = self.inventory > Decimal::ZERO && (
|
|
|
- // 反转平仓
|
|
|
- (self.fair_price < self.mid_price * (Decimal::ONE - self.params.close) && self.trend_rate > self.params.open * dec!(5))
|
|
|
- // 达到最大持仓时间平仓
|
|
|
- || (now - self.prev_open_time > is_holding_time_over)
|
|
|
+ // 反转平仓1
|
|
|
+ (self.fair_price < self.mid_price * (Decimal::ONE - self.params.close))
|
|
|
+ // 反转平仓2
|
|
|
+ || (self.trend_rate > self.params.open * dec!(7))
|
|
|
+ // 达到最大持仓时间还未盈利就平仓
|
|
|
+ || (now - self.prev_open_time > is_holding_time_over && self.mid_price < self.pos_avg_price)
|
|
|
);
|
|
|
let is_close_short = self.inventory < Decimal::ZERO && (
|
|
|
- // 反转平仓
|
|
|
- (self.fair_price > self.mid_price * (Decimal::ONE + self.params.close) && self.trend_rate < self.params.open * dec!(-5))
|
|
|
- // 达到最大持仓时间平仓
|
|
|
- || (now - self.prev_open_time > is_holding_time_over)
|
|
|
+ // 反转平仓1
|
|
|
+ (self.fair_price > self.mid_price * (Decimal::ONE + self.params.close))
|
|
|
+ // 反转平仓2
|
|
|
+ || (self.trend_rate < self.params.open * dec!(-7))
|
|
|
+ // 达到最大持仓时间还未盈利就平仓
|
|
|
+ || (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 < self.params.open * dec!(-5);
|
|
|
- let is_open_short = self.fair_price < self.mid_price * (Decimal::ONE - self.params.open) && self.trend_rate > self.params.open * dec!(5);
|
|
|
+ let is_open_long = self.fair_price > self.mid_price * (Decimal::ONE + self.params.open) && self.trend_rate < self.params.open * dec!(-7);
|
|
|
+ let is_open_short = self.fair_price < self.mid_price * (Decimal::ONE - self.params.open) && self.trend_rate > self.params.open * dec!(7);
|
|
|
|
|
|
// 使信号有一定持续性
|
|
|
if is_close_long {
|
|
|
@@ -415,9 +419,9 @@ impl Predictor {
|
|
|
self.trade_condition_time = now;
|
|
|
}
|
|
|
|
|
|
- // 开仓信号要过期,只保留10秒
|
|
|
+ // 开仓信号要过期,只保留5秒
|
|
|
if (self.trade_condition == dec!(3) || self.trade_condition == dec!(4))
|
|
|
- && now - self.trade_condition_time > dec!(10_000) {
|
|
|
+ && now - self.trade_condition_time > dec!(5_000) {
|
|
|
self.trade_condition = Decimal::ZERO;
|
|
|
}
|
|
|
|
|
|
@@ -444,13 +448,13 @@ impl Predictor {
|
|
|
self.bid_delta = dec!(0);
|
|
|
self.ask_delta = dec!(-2);
|
|
|
|
|
|
- self.optimal_bid_price = self.fair_price;
|
|
|
+ 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;
|
|
|
+ self.optimal_ask_price = self.fair_price * dec!(0.999);
|
|
|
self.optimal_bid_price = Self::DONT_VIEW;
|
|
|
}
|
|
|
}
|