{"record":{"id":"b73fe4d35a22d753","repo":"nautechsystems/nautilus_trader","slug":"pegged-orders-only-supported-for-limit-order-type-b73fe4","errorCode":null,"errorMessage":"Pegged orders only supported for LIMIT order type, was {order_type:?}","messagePattern":"Pegged orders only supported for LIMIT order type, was (.+?)","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/adapters/bitmex/src/http/client.rs","lineNumber":1726,"sourceCode":"\n            params.peg_price_type(BitmexPegPriceType::TrailingStopPeg);\n\n            // BitMEX requires negative offset for stop-sell orders\n            let signed_offset = match order_side {\n                OrderSide::Sell => -offset.abs(),\n                OrderSide::Buy => offset.abs(),\n            };\n            params.peg_offset_value(signed_offset);\n        }\n\n        // Pegged orders (BBO) via params override\n        if peg_price_type.is_none() && peg_offset_value.is_some() {\n            anyhow::bail!(\"`peg_offset_value` requires `peg_price_type`\");\n        }\n\n        if let Some(peg_type) = peg_price_type {\n            if order_type != OrderType::Limit {\n                anyhow::bail!(\n                    \"Pegged orders only supported for LIMIT order type, was {order_type:?}\"\n                );\n            }\n            params.ord_type(BitmexOrderType::Pegged);\n            params.peg_price_type(peg_type);\n\n            if let Some(offset) = peg_offset_value {\n                params.peg_offset_value(offset);\n            }\n        }\n\n        let mut exec_inst = Vec::new();\n\n        if post_only {\n            exec_inst.push(BitmexExecInstruction::ParticipateDoNotInitiate);\n        }\n\n        if reduce_only {","sourceCodeStart":1708,"sourceCodeEnd":1744,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/bitmex/src/http/client.rs#L1708-L1744","documentation":"Parameter validation in BitmexHttpClient.submit_order: pegged-order parameters (peg price type or offset) were provided for a non-LIMIT order. BitMEX only supports pegging on limit orders, so the request is rejected.","triggerScenarios":"Calling submit_order with peg_price_type=Some(...) while order_type is Market or another non-Limit type.","commonSituations":"Applying peg params in a shared submit path that handles market and limit orders; ordering a pegged-to-BBO order but building it as a market order.","solutions":["Use OrderType::Limit when peg_price_type is set","Remove the peg_price_type for non-limit orders","Guard the peg parameter block with an order-type check"],"exampleFix":"// before\nord_type(Market) + peg_price_type(LastPeg)\n// after\nord_type(Limit) + peg_price_type(LastPeg)","handlingStrategy":"validation","validationCode":"if peg_price_type.is_some() && order_type != OrderType::Limit {\n    return Err(anyhow::anyhow!(\"pegged orders require OrderType::Limit\"));\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Gate peg params on order_type == Limit","Keep a shared helper that builds pegged limit orders only","Cover the market-order peg case in tests"],"tags":["rust","bitmex","pegged-orders","validation"],"backgroundTag":"unsupported-operation","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}