nautechsystems/nautilus_trader · error

Cancel all algo orders failed: {}

Error message

Cancel all algo orders failed: {}

What it means

Thrown by BinanceFuturesHttpClient::cancel_all_algo_orders when the Binance Algo service response to a bulk conditional-order cancel has a code other than 200. It is the algo-endpoint sibling of 'Cancel all orders failed': transport and auth succeeded, but the venue rejected cancellation of the algo orders for the symbol, with response.msg carrying the venue reason.

Source

Thrown at crates/adapters/binance/src/futures/http/client.rs:2469

    /// Cancels all open algo orders for a symbol.
    ///
    /// # Errors
    ///
    /// Returns an error if the request fails.
    pub async fn cancel_all_algo_orders(&self, instrument_id: InstrumentId) -> anyhow::Result<()> {
        let symbol = format_binance_symbol(&instrument_id);

        let params = BinanceCancelAllAlgoOrdersParams {
            symbol,
            recv_window: None,
        };

        let response = self.inner.cancel_all_algo_orders(&params).await?;
        if response.code == 200 {
            Ok(())
        } else {
            anyhow::bail!("Cancel all algo orders failed: {}", response.msg);
        }
    }

    /// Cancels multiple orders in a single request (up to 10 orders).
    ///
    /// Each cancel in the batch is processed independently. The response contains
    /// the result for each cancel, which can be either a success or an error.
    ///
    /// # Errors
    ///
    /// Returns an error if the batch exceeds 10 orders or the request fails.
    pub async fn batch_cancel_orders(
        &self,
        cancels: &[BatchCancelItem],
    ) -> BinanceFuturesHttpResult<Vec<BatchOrderResult>> {
        self.inner.batch_cancel_orders(cancels).await
    }

View on GitHub (pinned to a4b06ed870)

Solutions

  1. Inspect the embedded msg to classify: no-open-orders style responses can be treated as success for cleanup flows
  2. Ensure the same account/API key/environment that submitted the algo orders is used to cancel them
  3. Guard the call: only invoke cancel_all_algo_orders when open algo order reports exist for the instrument
  4. Verify instrument_id symbol matches the venue's market type for this client
Defensive patterns

Strategy: try-catch

Try / catch

Treat non-200 with 'no open algo orders' style msg as success during cleanup; otherwise log code/msg and re-raise for manual intervention.

Prevention

When it happens

Trigger: Calling cancel_all_algo_orders(instrument_id) where the symbol has no open algo orders but the endpoint still returns an error code; symbol formatted for the wrong market type; API key lacking algo/trade permissions; environment mismatch (order placed on testnet, cancel-all sent to mainnet).

Common situations: Session-shutdown cleanup routines that assume algo orders exist; mixed usage of regular and algo order submission paths where cancel-all-algo is called unconditionally for every symbol; permissions changed on the API key after algo orders were placed.

Related errors


AI-assisted analysis of nautechsystems/nautilus_trader@a4b06ed870 (2026-08-16). Data as JSON: /api/errors/d3b6c07ca4a15fde. Report an issue: GitHub.