|
|
@@ -200,6 +200,7 @@ impl Quant {
|
|
|
let depths_key: String = tickers_key.clone();
|
|
|
let market_update_time_key = tickers_key.clone();
|
|
|
let market_update_interval_key = tickers_key.clone();
|
|
|
+ let max_buy_min_sell_cache_key = tickers_key.clone();
|
|
|
|
|
|
quant_obj.tickers.insert(tickers_key, SpecialTicker {
|
|
|
sell: Default::default(),
|
|
|
@@ -210,12 +211,14 @@ impl Quant {
|
|
|
quant_obj.depths.insert(depths_key, Default::default());
|
|
|
quant_obj.market_update_time.insert(market_update_time_key, Default::default());
|
|
|
quant_obj.market_update_interval.insert(market_update_interval_key, Default::default());
|
|
|
+ quant_obj.max_buy_min_sell_cache.insert(max_buy_min_sell_cache_key, vec![Decimal::ZERO, Decimal::ZERO]);
|
|
|
}
|
|
|
let name = format!("{}{}{}", quant_obj.exchange.clone(), "@", quant_obj.symbol);
|
|
|
let market_update_time_key = name.clone();
|
|
|
let market_update_interval_key = name.clone();
|
|
|
let tickers_key = name.clone();
|
|
|
let depths_key = name.clone();
|
|
|
+ let max_buy_min_sell_cache_key = name.clone();
|
|
|
quant_obj.trade_name = name;
|
|
|
quant_obj.market_update_time.insert(market_update_time_key, Default::default());
|
|
|
quant_obj.market_update_interval.insert(market_update_interval_key, Default::default());
|
|
|
@@ -225,6 +228,7 @@ impl Quant {
|
|
|
mid_price: Default::default(),
|
|
|
});
|
|
|
quant_obj.depths.insert(depths_key, Default::default());
|
|
|
+ quant_obj.max_buy_min_sell_cache.insert(max_buy_min_sell_cache_key, vec![Decimal::ZERO, Decimal::ZERO]);
|
|
|
// broker.newWs
|
|
|
let mut price_alpha: Vec<Decimal> = Vec::new();
|
|
|
for ref_pair_str in params.ref_pair {
|
|
|
@@ -1109,8 +1113,12 @@ pub fn run_strategy(quant_arc: Arc<Mutex<Quant>>) -> JoinHandle<()>{
|
|
|
}
|
|
|
// 计算耗时并进行休眠
|
|
|
let pass_time = Utc::now().timestamp_millis() - start_time;
|
|
|
- sleep(Duration::from_millis(quant.interval.to_u64().unwrap() - pass_time.to_u64().unwrap())).await;
|
|
|
- }
|
|
|
+ let mut delay = 1u64;
|
|
|
+ if pass_time < quant.interval.to_i64().unwrap() {
|
|
|
+ delay = quant.interval.to_u64().unwrap() - pass_time.to_u64().unwrap();
|
|
|
+ }
|
|
|
+ sleep(Duration::from_millis(delay)).await;
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
pub async fn run_transaction(quant_arc: Arc<Mutex<Quant>>, name: String, symbols: Vec<String>, exchange_params: BTreeMap<String, String>) {
|