Fix order handling
This commit is contained in:
@@ -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?;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user