Skip to main content

modify_order

Function modify_order 

Source
pub async fn modify_order(
    __arg0: State<RestState>,
    rec: Option<Extension<Arc<KeyRecord>>>,
    headers: HeaderMap,
    __arg3: Json<Value>,
) -> Result<Json<Value>, (StatusCode, Json<Value>)>
Expand description

POST /api/modify-order — 改单/撤单

v1.2:和 place_order 类似但 ModifyOrder protobuf 给不出 symbol/qty/value (只有 order_id),只能做 market 白名单 + hours 检查;symbol/value/side 留空让 check_full_skip_rate 自动跳过。

响应语义(v1.4.111 P2-5 doc 沉淀,对齐 C++ APIServer_Trd_ModifyOrder by-design): ret_type=0 仅表示 backend 接受了 modify 操作 (operation ACK), 保证 /api/orders 立即可见新 price/qty/status. 客户端不应调完 modify-order 就立即 query /api/orders 期望看到改动 — race window 通常 < 2s (backend push 异步同步 daemon orders cache).

正确 client pattern (ack-based):

  1. modify-order 返 ret_type=0 → assume backend 接受
  2. wait push event (REST /ws 订阅 trade notify) 或 sleep 1-2s 后 retry query
  3. 若 2s+ 仍看不到更新 → v1.4.109 stub TTL guard fallback 会主动 refresh orders (post_ack.rs:50-80, 默认 14.5s TTL 兜底)

不修原因: C++ OpenD 同条件也只返 operation ACK (modify_order.rs:809 注释), Rust 同 C++ 行为 = by-design 对齐 (pitfall #51 “对齐 C++ = 减法, 不超越”).