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参数的可选值为:buy、sell。buy表示买入,sell表示卖出。
对于期货交易所对象,side参数的可选值为:buy、closebuy、sell、closesell。buy表示开多仓,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参数中的TpOrderPrice或SlOrderPrice设置为-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}