|
|
@@ -21,6 +21,7 @@ use global::trace_stack::TraceStack;
|
|
|
use standard::{Account, Market, Order, OrderCommand, Platform, Position, PositionModeEnum, SpecialTicker, Ticker};
|
|
|
use standard::exchange::{Exchange};
|
|
|
use standard::exchange::ExchangeEnum::{BinanceSpot, BinanceSwap, BitgetSpot, GateSpot, GateSwap, KucoinSwap};
|
|
|
+use crate::instant_volatility_indicator::InstantVolatilityIndicator;
|
|
|
|
|
|
use crate::model::{LocalPosition, OrderInfo, TokenParam, TraderMsg};
|
|
|
use crate::predictor::Predictor;
|
|
|
@@ -164,7 +165,25 @@ impl Quant {
|
|
|
ref_name: Default::default(),
|
|
|
trade_name: "".to_string(),
|
|
|
ready: 0,
|
|
|
- predictor: Default::default(),
|
|
|
+ predictor: PredictorNew{
|
|
|
+ loop_count: 0,
|
|
|
+ market_info_list: vec![],
|
|
|
+ mid_price_list: vec![],
|
|
|
+ ref_mid_price_per_exchange_per_frame: vec![],
|
|
|
+ ref_exchange_length: 0,
|
|
|
+ data_length_max: 0,
|
|
|
+ alpha: vec![],
|
|
|
+ gamma: Default::default(),
|
|
|
+ avg_spread_list: vec![],
|
|
|
+ transaction_prices: vec![],
|
|
|
+ variance: Default::default(),
|
|
|
+ balance_value: Default::default(),
|
|
|
+ max_spread: Default::default(),
|
|
|
+ min_spread: Default::default(),
|
|
|
+ rl_num: Default::default(),
|
|
|
+ max_position_value: Default::default(),
|
|
|
+ vol: InstantVolatilityIndicator::new(1, 1),
|
|
|
+ },
|
|
|
market: Market {
|
|
|
symbol: symbol.clone(),
|
|
|
base_asset: "".to_string(),
|
|
|
@@ -683,7 +702,9 @@ impl Quant {
|
|
|
// }
|
|
|
// 只用第一参考交易所最佳买卖价的中间价
|
|
|
if name == self.ref_name[0] {
|
|
|
- self.predictor.market_update(data.mid_price);
|
|
|
+ self.predictor.market_update(data.mid_price.clone());
|
|
|
+ // 查看进度
|
|
|
+ self.predictor.vol.get_process();
|
|
|
}
|
|
|
self.tickers.insert(name, data);
|
|
|
|
|
|
@@ -1021,15 +1042,15 @@ impl Quant {
|
|
|
self.stop().await;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // 定价异常风控
|
|
|
- if self.ready == 1 && (self.strategy.ref_price - self.strategy.mp).abs() / self.strategy.mp > dec!(0.03) {
|
|
|
-
|
|
|
- let exit_msg = format!("{} 定价偏离过大,怀疑定价异常,退出。", self.params.account_name);
|
|
|
- warn!(exit_msg);
|
|
|
- warn!(?self.strategy.ref_price, ?self.strategy.mp);
|
|
|
- self.exit_msg = exit_msg;
|
|
|
- self.stop().await;
|
|
|
+ if self.strategy.ref_price != Decimal::ZERO {
|
|
|
+ // 定价异常风控
|
|
|
+ if self.ready == 1 && (self.strategy.ref_price - self.strategy.mp).abs() / self.strategy.mp > dec!(0.03) {
|
|
|
+ let exit_msg = format!("{} 定价偏离过大,怀疑定价异常,退出。", self.params.account_name);
|
|
|
+ warn!(exit_msg);
|
|
|
+ warn!(?self.strategy.ref_price, ?self.strategy.mp);
|
|
|
+ self.exit_msg = exit_msg;
|
|
|
+ self.stop().await;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|