exchange.ModifyOrder()函数用于修改现有的普通订单,可以修改订单的价格和数量。支持通过附加参数修改订单的其他属性(取决于交易所API支持)。
修改订单成功时返回订单ID,修改失败时返回空值。返回的订单ID可能与原订单ID相同,也可能不同,这取决于交易所API的实现方式。某些交易所修改订单后会返回新的订单ID,而有些交易所保持订单ID不变。 string / 空值
exchange.ModifyOrder(orderId, side, price, amount)
参数orderId用于指定要修改的原订单ID。订单ID格式与{@fun/Trade/exchange.CreateOrder exchange.CreateOrder}函数返回的订单ID一致,由交易所品种代码和交易所原始订单ID组成,以英文逗号分隔。例如:"ETH-USDT,1547130415509278720"。
orderId
true
string
参数side用于指定订单的交易方向。
对于现货交易所对象,side参数的可选值为:buy、sell。buy表示买入,sell表示卖出。
对于期货交易所对象,side参数的可选值为:buy、closebuy、sell、closesell。buy表示开多仓,closebuy表示平多仓,sell表示开空仓,closesell表示平空仓。
支持附加参数(option):可以通过side参数传递附加参数,格式为:"side;{JSON对象}"或"side;key=value&key=value"。
例如:"buy;{\"priceMatch\":\"QUEUE_20\"}"或"buy;priceMatch=QUEUE_20"。
附加参数用于修改订单的其他属性(如价格匹配模式等),具体支持的参数取决于交易所API。
side
true
string
参数price用于设置订单的新价格。价格为-1时表示不修改价格,或者根据交易所API实现可能转为市价单。
price
true
number
参数amount用于设置订单的新下单量。数量为-1时表示不修改数量。需要注意,当订单为现货市价买单时,下单量为买入金额;个别现货交易所的市价买单下单量为交易币数量。
amount
true
number
”`javascript function 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)
}
python
def 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)```
”`cpp 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);
}
修改普通订单的价格和数量。
javascript
function 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)
}
python
import 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)```
”`cpp 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);
}“` 使用附加参数(option)修改订单的价格匹配模式。
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文档。
{@fun/Trade/exchange.CreateOrder exchange.CreateOrder}, {@fun/Trade/exchange.CancelOrder exchange.CancelOrder}, {@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}