{"record":{"id":"75ccfd2ee9e56287","repo":"nautechsystems/nautilus_trader","slug":"missing-trigger-price-for-derive-trigger-order","errorCode":null,"errorMessage":"missing trigger price for Derive trigger order {}","messagePattern":"missing trigger price for Derive trigger order (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/adapters/derive/src/http/query.rs","lineNumber":536,"sourceCode":"    wallet: Address,\n    signer: &PrivateKeySigner,\n    nonce: u64,\n    signature_expiry_sec: i64,\n    module_address: Address,\n    domain_separator: B256,\n    action_typehash: B256,\n    max_fee: Decimal,\n    explicit_price: Option<Decimal>,\n    conn_id: impl Into<String>,\n    order_id: impl Into<String>,\n) -> anyhow::Result<DeriveTriggerOrderParams> {\n    validate_trigger_order_support(order)?;\n    let limit_price = resolve_limit_price(order, explicit_price)?;\n    let amount = order.quantity().as_decimal();\n    let order_type = trigger_order_type_to_derive(order.order_type())?;\n    let time_in_force = time_in_force_to_derive(order.time_in_force(), order.is_post_only())?;\n    let trigger_price = order.trigger_price().ok_or_else(|| {\n        anyhow::anyhow!(\n            \"missing trigger price for Derive trigger order {}\",\n            order.client_order_id()\n        )\n    })?;\n    let trigger_fields = DeriveTriggerFields {\n        trigger_price: trigger_price.as_decimal(),\n        trigger_price_type: trigger_price_type_to_derive(order.trigger_type())?,\n        trigger_type: trigger_type_to_derive(order.order_type())?,\n    };\n    let order = build_signed_order_params(\n        order,\n        instrument,\n        subaccount_id,\n        wallet,\n        signer,\n        nonce,\n        signature_expiry_sec,\n        module_address,","sourceCodeStart":518,"sourceCodeEnd":554,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/adapters/derive/src/http/query.rs#L518-L554","documentation":"Derive trigger (conditional) orders require a trigger price, but the OrderRequestTrigger order passed to the payload builder has none. validate_trigger_order_support and type conversion run first; the trigger price is then extracted via order.trigger_price() and this error is thrown when it is None.","triggerScenarios":"Submitting a trigger/stop order to Derive where the request's trigger_price field was never set — e.g. building a TriggerOrder without trigger_price, or an order that lost its trigger through an amendment or conversion.","commonSituations":"Order builders that only set trigger_price conditionally; translating orders from another venue that models stops differently (e.g. stop-distance instead of stop-price); stale order state after partial rejection.","solutions":["Set trigger_price on the order before submitting it to Derive","Ensure the order is built as a TriggerOrder type and not a plain Limit/Market order mislabeled","Check the order-submission path so stop-distance values are converted into an absolute trigger price"],"exampleFix":"// before\nlet order = OrderRequestTrigger::builder().order_type(OrderType::StopMarket).quantity(qty).build();\n// after\nlet order = OrderRequestTrigger::builder()\n    .order_type(OrderType::StopMarket)\n    .quantity(qty)\n    .trigger_price(Price::from(\"2500.00\"))\n    .build();","handlingStrategy":"validation","validationCode":"if let Some(order) = order.as_trigger() { assert!(order.trigger_price().is_some(), \"trigger order {} missing trigger_price\", order.client_order_id()); }","typeGuard":"fn has_trigger_price(order: &OrderRequestTrigger) -> bool { order.trigger_price().is_some() }","tryCatchPattern":"match submit(order) { Err(e) if e.to_string().contains(\"missing trigger price\") => requeue_with_trigger_price(order), Err(e) => return Err(e) }","preventionTips":["Always set trigger_price when constructing trigger/stop orders","Validate trigger price presence in your own order-builder API","Never convert plain Limit/Market orders into Derive trigger orders without an absolute trigger price"],"tags":["rust","adapter","orders","validation"],"backgroundTag":"missing-required-argument","analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}