From 1a1b68ff4f20d472bbd7c702ca2865617b50f3a2 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sun, 2 Aug 2026 03:13:01 +0200 Subject: [PATCH] Fix order handling --- src/engine/engine/execution.rs | 13 +++++++------ src/engine/engine/strategy.rs | 14 ++++++++------ 2 files changed, 15 insertions(+), 12 deletions(-) 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