exchange.ModifyOrder
exchange.ModifyOrder()函数用于修改现有的普通订单,可修改订单的价格和数量。该函数支持通过附加参数修改订单的其它属性(具体取决于交易所 API 的支持情况)。
exchange.ModifyOrder(orderId, side, price, amount)示例
-
修改普通订单的价格和数量。
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); }c++void main() { // 创建一个限价买单 auto id = exchange.CreateOrder("SOL_USDT.swap", "buy", 88, 1); Log("Original Order ID:", id); Sleep(2000); // 查询原始订单信息 auto order = exchange.GetOrder(id); Log("Original Order Info:", order); Sleep(1000); // 修改订单的价格和数量 auto newId = exchange.ModifyOrder(id, "buy", 77, 2); Log("Modified Order ID:", newId); Sleep(2000); // 查询修改后的订单信息 auto newOrder = exchange.GetOrder(newId); Log("Modified Order Info:", newOrder); // 取消订单 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 // 通过 side 参数传递附加参数(JSON 格式) var option = {"priceMatch": "QUEUE_20"} var sideWithOption = "buy;" + JSON.stringify(option) var newId = exchange.ModifyOrder(id, sideWithOption, -1, 2) Log("Modified Order ID:", newId) Sleep(2000) // 查询修改后的订单信息 var newOrder = exchange.GetOrder(newId) Log("Modified Order Info:", newOrder) // 撤销订单 exchange.CancelOrder(newId) }pythonimport json def main(): # 创建一个限价买单 id = exchange.CreateOrder("SOL_USDT.swap", "buy", 77, 1) Log("Original Order ID:", id) Sleep(2000) # 修改订单,并将价格匹配模式设置为 QUEUE_20 # 通过 side 参数传递附加参数(JSON 格式) option = {"priceMatch": "QUEUE_20"} sideWithOption = "buy;" + json.dumps(option) newId = exchange.ModifyOrder(id, sideWithOption, -1, 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", 77, 1).unwrap(); Log!("Original Order ID:", id); Sleep(2000); // 修改订单,并将价格匹配模式设置为 QUEUE_20 // 通过 side 参数传递附加参数(JSON 格式);Rust 不支持 JSON.stringify,因此直接使用原始字符串构造 JSON 文本 let option = r#"{"priceMatch": "QUEUE_20"}"#; let sideWithOption = format!("buy;{}", option); let newId = exchange.ModifyOrder(&id, &sideWithOption, -1, 2).unwrap(); Log!("Modified Order ID:", newId); Sleep(2000); // 查询修改后的订单信息 let newOrder = exchange.GetOrder(&newId).unwrap(); Log!("Modified Order Info:", newOrder); // 撤销订单 let _ = exchange.CancelOrder(&newId); }c++void main() { // 创建一个限价买单 auto id = exchange.CreateOrder("SOL_USDT.swap", "buy", 77, 1); Log("Original Order ID:", id); Sleep(2000); // 修改订单,并将价格匹配模式设置为 QUEUE_20 // 通过 side 参数传递附加参数(JSON 格式) json option = R"({"priceMatch": "QUEUE_20"})"_json; string sideWithOption = "buy;" + option.dump(); auto newId = exchange.ModifyOrder(id, sideWithOption, -1, 2); Log("Modified Order ID:", newId); Sleep(2000); // 查询修改后的订单信息 auto newOrder = exchange.GetOrder(newId); Log("Modified Order Info:", newOrder); // 撤销订单 exchange.CancelOrder(newId); }
返回值
| 类型 | 描述 |
string / 空值 | 修改订单成功时返回订单 ID,修改失败时返回空值。返回的订单 ID 可能与原订单 ID 相同,也可能不同,这取决于交易所 API 的实现方式。某些交易所在修改订单后会返回新的订单 ID,而有些交易所则保持订单 ID 不变。 |
参数
| 名称 | 类型 | 必填 | 描述 |
orderId | string | 是 | 参数 |
side | string | 是 | 参数 对于现货交易所对象, 对于期货交易所对象, 支持附加参数(option):可通过 例如: 附加参数用于修改订单的其它属性(如价格匹配模式等),具体支持的参数取决于交易所 API。 |
price | number | 是 | 参数 |
amount | number | 是 | 参数 |
参考
备注
exchange.ModifyOrder()函数返回的订单 ID 因交易所 API 的实现不同而可能有不同的行为。有些交易所 API 返回的订单 ID 会更新,有些则保持不变。建议使用返回的新订单 ID 进行后续操作。
exchange.ModifyOrder()函数不会依据交易所接口规则校验参数的有效性,而是将参数直接提交给交易所 API。传入无效参数时(如价格或数量为 -1),参数可能会被交易所忽略,订单将保持原有属性不变。
支持通过side参数传递附加参数(option),用于修改订单的其它属性。附加参数需与side参数合并后传入,格式为"side;{JSON对象}"(推荐)或"side;key=value"(URL 编码格式)。例如,修改价格匹配模式:"buy;{\"priceMatch\":\"QUEUE_20\"}"。
对于普通订单的市价单修改,需具体查看交易所 API 是否支持。有些交易所不支持对市价单进行修改操作。
修改订单时,订单的其它属性(如订单类型、持仓模式、账户模式、杠杆、订单生效规则等)通常会保留原订单的设置。如需修改这些属性,可通过附加参数(option)传入,前提是交易所 API 支持。
个别交易所 API 在未接收到价格参数时(price 为 -1 或 null),可能会将订单转为市价单。对于现货市价买单,需要注意其下单量单位可能是金额而非币数。
修改订单功能的支持情况取决于具体交易所,部分交易所可能不支持修改订单功能,或仅支持修改部分参数。使用前请查阅对应交易所的 API 文档。