exchange.ModifyConditionOrder

exchange.ModifyConditionOrder()函数用于修改现有的条件单,可以修改条件单的数量、触发条件和执行价格。支持通过附加参数修改条件单的其他属性(取决于交易所API支持)。

修改条件单成功时返回条件单ID,修改失败时返回空值。返回的条件单ID可能与原条件单ID相同,也可能不同,这取决于交易所API的实现方式。某些交易所修改条件单后会返回新的条件单ID,而有些交易所则保持条件单ID不变。 string / 空值

exchange.ModifyConditionOrder(orderId, side, amount, condition)

参数orderId用于指定要修改的原条件单ID。条件单ID格式与{@fun/Trade/exchange.CreateConditionOrder exchange.CreateConditionOrder}函数返回的条件单ID一致,由交易所品种代码和交易所原始条件单ID组成,以英文逗号分隔。例如:"SOL-USDT-SWAP,3196255845130256384"。 orderId true string 参数side用于指定条件单的交易方向。

对于现货交易所对象,side参数的可选值为:buysellbuy表示买入,sell表示卖出。

对于期货交易所对象,side参数的可选值为:buyclosebuysellclosesellbuy表示开多仓,closebuy表示平多仓,sell表示开空仓,closesell表示平空仓。

支持附加参数(option):可以通过side参数传递附加参数,格式为:"side;{JSON对象}""side;key=value&key=value"

例如:"buy;{\"newTpTriggerPxType\":\"index\"}""buy;newTpTriggerPxType=index"

附加参数用于修改条件单的其他属性(如触发价格类型等),具体支持的参数取决于交易所API。 side true string 参数amount用于设置条件单的新下单量。数量为-1时表示不修改数量。对于期货交易所对象,下单量参数amount均为合约张数。 amount true number 参数condition是一个对象,用于设置条件单的新触发条件和执行价格。该对象的结构参考{@struct/Condition Condition}结构,包含以下属性:

  • ConditionType(number):条件类型,参考{@var/ORDER_CONDITION_TYPE/ORDER_CONDITION_TYPE_OCO ORDER_CONDITION_TYPE_OCO}、{@var/ORDER_CONDITION_TYPE/ORDER_CONDITION_TYPE_TP ORDER_CONDITION_TYPE_TP}、{@var/ORDER_CONDITION_TYPE/ORDER_CONDITION_TYPE_SL ORDER_CONDITION_TYPE_SL}、{@var/ORDER_CONDITION_TYPE/ORDER_CONDITION_TYPE_GENERIC ORDER_CONDITION_TYPE_GENERIC}。

  • TpTriggerPrice(number):止盈触发价格。

  • TpOrderPrice(number):止盈执行价格,-1表示市价单。

  • SlTriggerPrice(number):止损触发价格。

  • SlOrderPrice(number):止损执行价格,-1表示市价单。 condition true object

”`javascript function main() { // 创建一个止盈条件单 var condition = { ConditionType: ORDER_CONDITION_TYPE_TP, TpTriggerPrice: 77, TpOrderPrice: 76 } var id = exchange.CreateConditionOrder(“SOL_USDT.swap”, “buy”, 1, condition) Log(“Original Condition Order ID:”, id) Sleep(2000)

// 查询原条件单信息
var order = exchange.GetConditionOrder(id)
Log("Original Condition Order Info:", order)
Sleep(1000)

// 修改条件单的数量和触发条件
var newCondition = {
    ConditionType: ORDER_CONDITION_TYPE_TP,
    TpTriggerPrice: 75,
    TpOrderPrice: 71
}
var newId = exchange.ModifyConditionOrder(id, "buy", 2, newCondition)
Log("Modified Condition Order ID:", newId)
Sleep(2000)

// 查询修改后的条件单信息
var newOrder = exchange.GetConditionOrder(newId)
Log("Modified Condition Order Info:", newOrder)

// 取消条件单
exchange.CancelConditionOrder(newId)

} python def main(): # 创建一个止盈条件单 condition = { “ConditionType”: ORDER_CONDITION_TYPE_TP, “TpTriggerPrice”: 77, “TpOrderPrice”: 76 } id = exchange.CreateConditionOrder(“SOL_USDT.swap”, “buy”, 1, condition) Log(“Original Condition Order ID:”, id) Sleep(2000)

# 查询原条件单信息
order = exchange.GetConditionOrder(id)
Log("Original Condition Order Info:", order)
Sleep(1000)

# 修改条件单的数量和触发条件
newCondition = {
    "ConditionType": ORDER_CONDITION_TYPE_TP,
    "TpTriggerPrice": 75,
    "TpOrderPrice": 71
}
newId = exchange.ModifyConditionOrder(id, "buy", 2, newCondition)
Log("Modified Condition Order ID:", newId)
Sleep(2000)

# 查询修改后的条件单信息
newOrder = exchange.GetConditionOrder(newId)
Log("Modified Condition Order Info:", newOrder)

# 取消条件单
exchange.CancelConditionOrder(newId)```

”`cpp void main() { // 创建一个止盈条件单 json condition = R”({ “ConditionType”: ORDER_CONDITION_TYPE_TP, “TpTriggerPrice”: 77, “TpOrderPrice”: 76 })“_json; auto id = exchange.CreateConditionOrder(“SOL_USDT.swap”, “buy”, 1, condition); Log(“Original Condition Order ID:”, id); Sleep(2000);

// 查询原条件单信息
auto order = exchange.GetConditionOrder(id);
Log("Original Condition Order Info:", order);
Sleep(1000);

// 修改条件单的数量和触发条件
json newCondition = R"({
    "ConditionType": ORDER_CONDITION_TYPE_TP,
    "TpTriggerPrice": 75,
    "TpOrderPrice": 71
})"_json;
auto newId = exchange.ModifyConditionOrder(id, "buy", 2, newCondition);
Log("Modified Condition Order ID:", newId);
Sleep(2000);

// 查询修改后的条件单信息
auto newOrder = exchange.GetConditionOrder(newId);
Log("Modified Condition Order Info:", newOrder);

// 取消条件单
exchange.CancelConditionOrder(newId);

} 修改条件单的数量和触发条件。 javascript function main() { // 创建一个止盈条件单 var condition = { ConditionType: ORDER_CONDITION_TYPE_TP, TpTriggerPrice: 77, TpOrderPrice: 76 } var id = exchange.CreateConditionOrder(“SOL_USDT.swap”, “buy”, 1, condition) Log(“Original Condition Order ID:”, id) Sleep(2000)

// 修改条件单,并设置触发价格类型为指数价格(index)
// 通过side参数传递附加参数(JSON格式)
var option = {"newTpTriggerPxType": "index"}
var sideWithOption = "buy;" + JSON.stringify(option)

var newCondition = {
    ConditionType: ORDER_CONDITION_TYPE_TP,
    TpTriggerPrice: 75,
    TpOrderPrice: 71
}
var newId = exchange.ModifyConditionOrder(id, sideWithOption, 2, newCondition)
Log("Modified Condition Order ID:", newId)
Sleep(2000)

// 查询修改后的条件单信息
var newOrder = exchange.GetConditionOrder(newId)
Log("Modified Condition Order Info:", newOrder)

// 取消条件单
exchange.CancelConditionOrder(newId)

} python import json

def main(): # 创建一个止盈条件单 condition = { “ConditionType”: ORDER_CONDITION_TYPE_TP, “TpTriggerPrice”: 77, “TpOrderPrice”: 76 } id = exchange.CreateConditionOrder(“SOL_USDT.swap”, “buy”, 1, condition) Log(“Original Condition Order ID:”, id) Sleep(2000)

# 修改条件单,并设置触发价格类型为指数价格(index)
# 通过side参数传递附加参数(JSON格式)
option = {"newTpTriggerPxType": "index"}
sideWithOption = "buy;" + json.dumps(option)

newCondition = {
    "ConditionType": ORDER_CONDITION_TYPE_TP,
    "TpTriggerPrice": 75,
    "TpOrderPrice": 71
}
newId = exchange.ModifyConditionOrder(id, sideWithOption, 2, newCondition)
Log("Modified Condition Order ID:", newId)
Sleep(2000)

# 查询修改后的条件单信息
newOrder = exchange.GetConditionOrder(newId)
Log("Modified Condition Order Info:", newOrder)

# 取消条件单
exchange.CancelConditionOrder(newId)```

”`cpp void main() { // 创建一个止盈条件单 json condition = R”({ “ConditionType”: ORDER_CONDITION_TYPE_TP, “TpTriggerPrice”: 77, “TpOrderPrice”: 76 })“_json; auto id = exchange.CreateConditionOrder(“SOL_USDT.swap”, “buy”, 1, condition); Log(“Original Condition Order ID:”, id); Sleep(2000);

// 修改条件单,并设置触发价格类型为指数价格(index)
// 通过side参数传递附加参数(JSON格式)
json option = R"({"newTpTriggerPxType": "index"})"_json;
string sideWithOption = "buy;" + option.dump();

json newCondition = R"({
    "ConditionType": ORDER_CONDITION_TYPE_TP,
    "TpTriggerPrice": 75,
    "TpOrderPrice": 71
})"_json;
auto newId = exchange.ModifyConditionOrder(id, sideWithOption, 2, newCondition);
Log("Modified Condition Order ID:", newId);
Sleep(2000);

// 查询修改后的条件单信息
auto newOrder = exchange.GetConditionOrder(newId);
Log("Modified Condition Order Info:", newOrder);

// 取消条件单
exchange.CancelConditionOrder(newId);

}“` 使用附加参数(option)修改条件单的触发价格类型。

exchange.ModifyConditionOrder()函数返回的条件单ID根据交易所API实现不同可能有不同行为。有些交易所API返回的条件单ID会更新,有些则保持不变。建议使用返回的新条件单ID进行后续操作。 exchange.ModifyConditionOrder()函数不会根据交易所接口规则校验参数有效性,会将参数直接提交给交易所API。传入无效参数时(如数量为-1),参数可能会被交易所忽略,条件单保持原有属性不变。 支持通过side参数传递附加参数(option),用于修改条件单的其他属性。附加参数需要与side参数合并传入,格式为"side;{JSON对象}"(推荐)或"side;key=value"(URL编码格式)。例如修改触发价格类型:"buy;{\"newTpTriggerPxType\":\"index\"}"。 对于条件单的市价单修改,需要具体查看交易所API是否支持。condition参数中的TpOrderPriceSlOrderPrice设置为-1表示市价单。 修改条件单时,条件单的其他属性(如条件类型、持仓模式、账户模式、杠杆等)通常会保留原条件单的设置。如果需要修改这些属性,可以通过附加参数(option)传入,前提是交易所API支持。 可以通过附加参数修改触发价格类型,例如将触发价格类型从最新价(last)修改为指数价格(index)或标记价格(mark)。具体参数名称和支持情况取决于交易所API文档。 修改条件单功能的支持情况取决于具体交易所,部分交易所可能不支持修改条件单功能或仅支持部分参数的修改。使用前请查阅对应交易所的API文档。

{@struct/Condition Condition}, {@fun/Trade/exchange.CreateConditionOrder exchange.CreateConditionOrder}, {@fun/Trade/exchange.CancelConditionOrder exchange.CancelConditionOrder}, {@fun/Trade/exchange.GetConditionOrder exchange.GetConditionOrder}, {@fun/Trade/exchange.GetConditionOrders exchange.GetConditionOrders}