修复日线投影缺盘口量拒单
This commit is contained in:
@@ -1541,7 +1541,10 @@ impl PlatformExprStrategy {
|
|||||||
let constraints = self.config.risk_config.trading_constraints;
|
let constraints = self.config.risk_config.trading_constraints;
|
||||||
let mut max_fill = requested_qty;
|
let mut max_fill = requested_qty;
|
||||||
|
|
||||||
if self.config.quote_quantity_limit || constraints.liquidity_limit_enabled {
|
let enforce_top_level_liquidity = quote.is_some()
|
||||||
|
&& (self.config.quote_quantity_limit || constraints.liquidity_limit_enabled)
|
||||||
|
|| quote.is_none() && constraints.liquidity_limit_enabled;
|
||||||
|
if enforce_top_level_liquidity {
|
||||||
let top_level_liquidity = match (quote, side) {
|
let top_level_liquidity = match (quote, side) {
|
||||||
(Some(quote), OrderSide::Buy) => quote
|
(Some(quote), OrderSide::Buy) => quote
|
||||||
.ask1_volume
|
.ask1_volume
|
||||||
@@ -1555,8 +1558,10 @@ impl PlatformExprStrategy {
|
|||||||
(None, OrderSide::Sell) => market.liquidity_for_sell().min(u32::MAX as u64) as u32,
|
(None, OrderSide::Sell) => market.liquidity_for_sell().min(u32::MAX as u64) as u32,
|
||||||
};
|
};
|
||||||
if top_level_liquidity == 0 {
|
if top_level_liquidity == 0 {
|
||||||
|
if quote.is_some() {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
let liquidity_limited = if side == OrderSide::Sell && allow_odd_lot_sell {
|
let liquidity_limited = if side == OrderSide::Sell && allow_odd_lot_sell {
|
||||||
top_level_liquidity
|
top_level_liquidity
|
||||||
} else {
|
} else {
|
||||||
@@ -1571,6 +1576,7 @@ impl PlatformExprStrategy {
|
|||||||
}
|
}
|
||||||
max_fill = max_fill.min(liquidity_limited);
|
max_fill = max_fill.min(liquidity_limited);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if constraints.volume_limit_enabled {
|
if constraints.volume_limit_enabled {
|
||||||
let volume_basis = match quote {
|
let volume_basis = match quote {
|
||||||
@@ -21544,9 +21550,9 @@ mod tests {
|
|||||||
ask1: 10.0,
|
ask1: 10.0,
|
||||||
prev_close: 9.9,
|
prev_close: 9.9,
|
||||||
volume: 1_000_000,
|
volume: 1_000_000,
|
||||||
minute_volume: 10_000,
|
minute_volume: 0,
|
||||||
bid1_volume: 2_000,
|
bid1_volume: 0,
|
||||||
ask1_volume: 2_000,
|
ask1_volume: 0,
|
||||||
trading_phase: Some("continuous".to_string()),
|
trading_phase: Some("continuous".to_string()),
|
||||||
paused: false,
|
paused: false,
|
||||||
upper_limit: 11.0,
|
upper_limit: 11.0,
|
||||||
|
|||||||
Reference in New Issue
Block a user