diff --git a/src/engine/engine/execution.rs b/src/engine/engine/execution.rs index db94da3..2f2fbac 100644 --- a/src/engine/engine/execution.rs +++ b/src/engine/engine/execution.rs @@ -80,14 +80,11 @@ impl Engine { .place(&acc.private_key.0, order, nonce, None, None) .await { + // Invalid order Ok(o) if o.iter().any(|o| matches!(o, OrderResponseStatus::Error(_))) => { - self.risk_engine.order_placed(engine_order).await; - } - - Ok(e) => { return Err(anyhow::anyhow!( - "order rejected: {}", - e.into_iter() + "order rejected by HyperLiquid: {}", + o.into_iter() .filter_map(|res| { if let OrderResponseStatus::Error(e) = res { Some(e) @@ -100,6 +97,10 @@ impl Engine { )); } + Ok(_) => { + self.risk_engine.order_placed(engine_order).await; + } + e => { e?; } diff --git a/src/engine/engine/strategy.rs b/src/engine/engine/strategy.rs index 3d09a10..27a0355 100644 --- a/src/engine/engine/strategy.rs +++ b/src/engine/engine/strategy.rs @@ -163,17 +163,19 @@ impl StrategyEngine { continue; } - match engine.execute_signal(&signal).await { - Ok(_) => engine.signals.lock().await.push(Ok(signal)), + let result = match engine.execute_signal(&signal).await { + Ok(_) => Ok(signal), Err(e) => { - engine.signals.lock().await.push(Err(signal)); - engine .terminal_server .error("engine::order", &format!("Failed to execute signal: {e}")) - .await? + .await?; + + Err(signal) } - } + }; + + engine.signals.lock().await.push(result); engine .terminal_server