exchange.ModifyOrder
修改现有普通订单的价格和数量;也可通过附加参数修改订单的其他属性(取决于交易所API是否支持)。
exchange.ModifyOrder(orderId, side, price, amount)
exchange.ModifyOrder(orderId, side, price, amount, options)示例
-
修改普通订单的价格和数量。
javascriptfunction main() { // 创建限价买单 var id = exchange.CreateOrder("SOL_USDT.swap", "buy", 88, 1) Log("Original Order ID:", id) Sleep(2000) // 查询原订单信息 var order = exchange.GetOrder(id) Log("Original Order Info:", order) Sleep(1000) // 修改订单的价格和数量 var newId = exchange.ModifyOrder(id, "buy", 77, 2) Log("Modified Order ID:", newId) Sleep(2000) // 查询修改后的订单信息 var newOrder = exchange.GetOrder(newId) Log("Modified Order Info:", newOrder) // 撤销订单 exchange.CancelOrder(newId) }pythondef main(): # 创建限价买单 id = exchange.CreateOrder("SOL_USDT.swap", "buy", 88, 1) Log("Original Order ID:", id) Sleep(2000) # 查询原订单信息 order = exchange.GetOrder(id) Log("Original Order Info:", order) Sleep(1000) # 修改订单的价格和数量 newId = exchange.ModifyOrder(id, "buy", 77, 2) Log("Modified Order ID:", newId) Sleep(2000) # 查询修改后的订单信息 newOrder = exchange.GetOrder(newId) Log("Modified Order Info:", newOrder) # 撤销订单 exchange.CancelOrder(newId)rustfn main() { // 创建限价买单 let id = exchange.CreateOrder("SOL_USDT.swap", "buy", 88, 1).unwrap(); Log!("Original Order ID:", id); Sleep(2000); // 查询原订单信息 let order = exchange.GetOrder(&id).unwrap(); Log!("Original Order Info:", order); Sleep(1000); // 修改订单的价格和数量 let newId = exchange.ModifyOrder(&id, "buy", 77, 2).unwrap(); Log!("Modified Order ID:", newId); Sleep(2000); // 查询修改后的订单信息 let newOrder = exchange.GetOrder(&newId).unwrap(); Log!("Modified Order Info:", newOrder); // 撤销订单 let _ = exchange.CancelOrder(&newId); } -
通过附加参数(option)修改订单的价格匹配模式。
javascriptfunction main() { // 创建限价买单 var id = exchange.CreateOrder("SOL_USDT.swap", "buy", 77, 1) Log("Original Order ID:", id) Sleep(2000) // 修改订单,同时将价格匹配模式设为QUEUE_20(交易所特有参数通过最后一个对象参数传入) var newId = exchange.ModifyOrder(id, "buy", -1, 2, {priceMatch: "QUEUE_20"}) Log("Modified Order ID:", newId) Sleep(2000) // 查询修改后的订单信息 var newOrder = exchange.GetOrder(newId) Log("Modified Order Info:", newOrder) // 撤销订单 exchange.CancelOrder(newId) }pythondef main(): # 创建限价买单 id = exchange.CreateOrder("SOL_USDT.swap", "buy", 77, 1) Log("Original Order ID:", id) Sleep(2000) # 修改订单,同时将价格匹配模式设为QUEUE_20(交易所特有参数通过最后一个对象参数传入) newId = exchange.ModifyOrder(id, "buy", -1, 2, {"priceMatch": "QUEUE_20"}) Log("Modified Order ID:", newId) Sleep(2000) # 查询修改后的订单信息 newOrder = exchange.GetOrder(newId) Log("Modified Order Info:", newOrder) # 撤销订单 exchange.CancelOrder(newId)rustfn main() { // 创建限价买单 let id = exchange.CreateOrder("SOL_USDT.swap", "buy", 77, 1).unwrap(); Log!("Original Order ID:", id); Sleep(2000); // 修改订单,同时将价格匹配模式设为QUEUE_20(Rust需使用带WithOptions后缀的函数传入对象参数) let opts = JSONParse(r#"{"priceMatch": "QUEUE_20"}"#).unwrap(); let newId = exchange.ModifyOrderWithOptions(&id, "buy", -1, 2, &opts).unwrap(); Log!("Modified Order ID:", newId); Sleep(2000); // 查询修改后的订单信息 let newOrder = exchange.GetOrder(&newId).unwrap(); Log!("Modified Order Info:", newOrder); // 撤销订单 let _ = exchange.CancelOrder(&newId); }
返回值
| 类型 | 描述 |
string / 空值 | 修改成功时返回订单ID,失败时返回空值。返回的订单ID可能与原订单ID相同,也可能不同,具体取决于交易所API的实现:部分交易所修改订单后会返回新的订单ID,部分交易所则保持订单ID不变。 |
参数
| 名称 | 类型 | 必填 | 描述 |
orderId | string | 是 | 待修改的原订单ID。其格式与 |
side | string | 是 | 交易方向。现货为 |
price | number | 是 | 订单的新价格。设为-1(或其他小于等于0的值)时表示不修改价格。 |
amount | number | 是 | 订单的新下单量。设为-1(或其他小于等于0的值)时表示不修改数量。价格和数量不能同时不修改,否则会报错并返回空值。注意:当订单为现货市价单买单时,下单量为买入金额;个别现货交易所的市价买单下单量为交易币数量。 |
options | object | 否 | 交易所特定参数,对象的键会原样传给交易所,例如 |
参考
备注
exchange.ModifyOrder()函数返回的订单ID因交易所API的实现而异:部分交易所会返回更新后的订单ID,部分则保持原订单ID不变。建议在后续操作中使用返回的新订单ID。
exchange.ModifyOrder()函数的价格或数量参数传入-1(即小于等于0的值)时,该项不会提交给交易所,表示不修改;若两项均不修改,则报错并返回空值。其他参数不按交易所接口规则校验,直接提交给交易所API。
交易所特定参数(option)放在最后一个对象参数中,用于修改订单的其他属性,例如修改价格匹配模式:exchange.ModifyOrder(id, "buy", -1, 2, {priceMatch: "QUEUE_20"})。Rust使用exchange.ModifyOrderWithOptions()。
普通订单中的市价单能否修改,需查看具体交易所API是否支持,部分交易所不支持修改市价单。
修改订单时,订单的其他属性(如订单类型、持仓模式、账户模式、杠杆、订单生效规则等)通常沿用原订单的设置。如需修改这些属性,可通过附加参数(option)传入,前提是交易所API支持。
对于现货市价买单,需注意订单数量的单位可能是金额,而非币的数量。
修改订单功能的支持情况因交易所而异,部分交易所不支持修改订单,或仅支持修改部分参数。使用前请查阅相应交易所的API文档。
也可以将参数附加在side参数之后(旧写法),格式为"side;{JSON对象}"或"side;key=value&key=value",例如"buy;{\"priceMatch\":\"QUEUE_20\"}"或"buy;priceMatch=QUEUE_20"。具体支持哪些参数取决于交易所API。
仅以下交易所支持:Binance、Futures_Binance、Bitfinex、Futures_Bitfinex、Bitget、Futures_Bitget、Bybit、Futures_Bybit、Crypto、Futures_Crypto、Futures_DeepCoin、Futures_Deribit、GateIO、Futures_GateIO、HitBTC、Kraken、Futures_Kraken、KuCoin、Futures_MEXC、OKEX、Futures_OKCoin、Poloniex、Upbit、WOO、Futures_WOO、Hyperliquid、Futures_Hyperliquid、Futures_Lighter、Futures_Aevo、Futures_dYdX、Futures_Boros、Futures_WOOFi、Jupiter、Futures_Futu。其余交易所调用时报错并返回空值,所有交易所的对照见能力矩阵。